0

非常に単純なWCFサービスを呼び出してSessionに値を保存する小さなSilverlightプラグインを含むWebサイトがあります。

それは私のPCで正常に動作し、サーバー(ホスティングプロバイダー)上の私のコンピューターでのみ正常に動作します。Silverlight Developer EditionがインストールされているすべてのマシンでSilverlightアプリが正常に動作することに気付きましたが、Silverlight Generic Editionがインストールされているすべてのマシンで、WCFサービスを呼び出すと、次のメッセージが表示されてアプリケーションが失敗します。 追加情報:[MessageXmlProtocolError]引数:デバッグリソース文字列は使用できません。多くの場合、キーと引数は診断に十分な情報を提供します...

crossdomain.xmlファイルとclientaccesspolicy.xmlファイルがありますが、これらは正しいはずであり、セキュリティなしでbasicHttpBindingを使用しています。また、開発者版には問題はありません。誰か助けてもらえますか?(Silverlightバージョン= 4)

4

2 に答える 2

0

問題は、受信した応答がWCFサービスが期待していたものではないことです。MSDNのドキュメントによると、MessageXmlProtocolErrorは次のとおりです。

「ネットワークから受信したXMLで問題が発生しました。詳細については、内部の例外を参照してください。」

これは、実際の原因を特定するために、内部例外が何であるかを確認する必要があることを意味します。

WCFサービスがIISで特定のURLでホストされている場合、送信者がWebサイトでそのURLにアクセスすることを許可されていない可能性があります。この問題は複数回発生しています。

問題のトラブルシューティングに役立つ方法は次のとおりです。

1)問題のあるコンピューターにSDKをインストールして、完全な例外が発生するかどうかを確認します。

2)次のようなブロックをweb.configに追加してWCFトレースを使用します(WCFサービスがIISでホストされていると想定)。

  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel"
              switchValue="Information, ActivityTracing"
              propagateActivity="true">
        <listeners>
          <add name="traceListener"
              type="System.Diagnostics.XmlWriterTraceListener"
              initializeData="c:\log\WebTrace.svclog"  />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

3)fiddlerなどのツールを使用して、WCFクライアントからの要求と応答を追跡し、問題を追跡できるかどうかを確認します。

于 2011-11-28T03:14:24.323 に答える
0

wcf サービスの URL を変更して、正しいサーバーで実行されるようにするコードを追加しました。これで問題が解決しました

于 2012-03-12T06:35:00.470 に答える