代码之家  ›  专栏  ›  技术社区  ›  Craig Graham

配置系统无法使用<system.serviceModel>进行初始化

  •  0
  • Craig Graham  · 技术社区  · 13 年前

    我正在尝试制作一个客户端,通过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>
    
    2 回复  |  直到 13 年前
        1
  •  1
  •   Craig Graham    13 年前

    啊。我试着用十六进制编辑器查看app.config文件,发现一些空白包含0xA0字符以及预期的0x20字符。在网页、OneNote和Visual Studio之间复制和粘贴片段时,出现了奇怪的错误。

    将文件粘贴到联机清理器中(在本例中 http://www.ubertoolz.com/demo/CleanUp.php )粘贴回来解决了这个问题。把它粘贴到记事本上并没有清除垃圾。格式很糟糕,因为它还去掉了制表符,但这只是一个小问题。

        2
  •  0
  •   Mike Payne    13 年前

    移动bindings元素,使其成为system.serviceModel的子元素:

    <system.serviceModel>
        <bindings>
            ...
        </bindings>
    </system.serviceModel>
    
    推荐文章