我正在尝试创建一个客户端,通过 WCF 将消息放入服务器上的队列中。结合使用各种网站、论坛帖子等,我编写了利用下面的 App.config 的代码。
当我执行检索 CryptoCoordinatorQueueName 的简单操作时,我得到一个异常。如果我注释掉 system.serviceModel 和 bindings 部分,异常就会消失并正确返回字符串。异常是“Configuration system failed to initialize”,向下挖掘我看到内部异常“Unrecognized element”和标签对应的行号。System.ServiceModel 被项目引用,但看起来这不足以使配置系统接受该元素。谁能看到如何解决这个问题?我正在使用 dotnet 4 和 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>