我正在尝试制作一个客户端,通过WCF将消息放入服务器上的队列中。使用各种网站、论坛帖子等的组合,我已经根据下面的App.config编写了代码。
当我执行检索CryptoCoordinatorQueueName的简单操作时,我会得到一个异常。如果我注释掉system.serviceModel和bindings部分,异常就会消失,并且正确返回字符串。异常是“配置系统未能初始化”,向下挖掘,我看到了内部异常“无法识别的元素”和与标记对应的行号。项目引用了System.ServiceModel,但这似乎不足以使配置系统接受该元素。有人知道怎么解决这个问题吗?我正在使用dotnet4和VS2010。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings"
type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="CryptoCoordinatorServiceTest.Properties.Settings"
type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<appSettings>
<add key="CryptoCoordinatorQueueName" value=".\private$\CryptoCoordinatorQueue" />
</appSettings>
<system.serviceModel>
 <services>
   <service behaviorConfiguration="MetadataBehavior" name="CryptoCoordinatorService.CryptoCoordinatorQueue">
     <endpoint
address="net.msmq://localhost/private/CryptoCoordinatorQueue"
binding="netMsmqBinding"
contract="CryptoCoordinatorService.ICryptoCoordinatorControlQueue"
bindingConfiguration="CryptoCoordinatorNetMsmqBinding"/>
     <endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"/>
     <host>
       <baseAddresses>
         <add baseAddress="http://localhost:8080/CryptoCoordinatorQueue/"/>
      Â
</baseAddresses>
    Â
</host>
   </service>
Â
</services>
</system.serviceModel>
<bindings>
 <netMsmqBinding>
   <binding name="CryptoCoordinatorNetMsmqBinding" deadLetterQueue="Custom">
     <security mode="None"/>
   </binding>
Â
</netMsmqBinding>
</bindings>
</configuration>