0

WCFを介してサーバー上のキューにメッセージを配置するクライアントを作成しようとしています。さまざまなWebサイト、フォーラムの投稿などを組み合わせて使用​​して、以下の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>
4

2 に答える 2

1

ああ。16 進エディタで app.config ファイルを調べてみたところ、空白に 0xA0 文字と予想される 0x20 が含まれていることがわかりました。Web ページ、OneNote、および Visual Studio 間でフラグメントをコピーして貼り付けると、どこかで奇妙な問題が発生します。

ファイルをオンライン クリーナー (この場合はhttp://www.ubertoolz.com/demo/CleanUp.php ) に貼り付けて貼り付け直すと、問題は解決しました。メモ帳に貼り付けても、ゴミは取り除かれませんでした。タブ文字も削除されているため、書式設定が台無しになっていますが、それはわずかな苛立ちです.

于 2012-10-03T14:48:38.830 に答える
0

system.serviceModel の子になるように bindings 要素を移動します。

<system.serviceModel>
    <bindings>
        ...
    </bindings>
</system.serviceModel>
于 2012-10-01T17:59:18.447 に答える