0

クライアント Silverlight アプリから WCF サービスを呼び出すと、ProtocolException が発生することがあります。

コンテンツ タイプ text/html。応答メッセージの charset=UTF-8 がバインディングのコンテンツ タイプ (text/xml; charset=utf-8) と一致しません。

通常は、WCF サービス コードにステップ インして、オブジェクトを構築し、シリアル化された形式で返すことを確認できます。

ただし、要求が ~4MB を超えると (Fiddler2 で報告されているように)、WCF サービス コードのブレークポイントはヒットせず、応答の内容 (シリアル化されたオブジェクトがあるはずの場所) は、表示される標準の HTML ページの HTML になります。サービスを参照した場合 - 次のようなサービス:

サービス紹介ページ

リクエスト オブジェクト グラフ内の文字列にランダムに文字を追加したり、グラフからチャンクを削除したりすることで、リクエストを失敗または成功させることができるので、これがリクエストのサイズであると確信しています。

応答に HTML が含まれている理由を誰かが説明できれば本当に感謝しています。また、修正方法を教えていただければさらに感謝します。

私はVS2010を使用しています。私のサーバー側の設定は次のとおりです。

<httpRuntime executionTimeout="10800"
               maxRequestLength="10240" />

...

<system.web>
    <httpRuntime maxRequestLength="2147483647" />
</system.web>

...

<serviceBehaviors>
    <behavior name="StandardServiceBehavior">
        <serviceMetadata httpGetEnabled="true"/>
        <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
        <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
</serviceBehaviors>

...

<binding name="BasicHttpBinding_SilverlightService"
         useDefaultWebProxy="false"
         transferMode="Streamed"
         bypassProxyOnLocal="true"
         receiveTimeout="00:20:00"
         sendTimeout="00:20:00"
         maxBufferSize="2147483647"
         maxReceivedMessageSize="2147483647"
         maxBufferPoolSize="2147483647">
    <readerQuotas maxStringContentLength="2147483647"
                  maxArrayLength="2147483647"
                  maxBytesPerRead="2147483647"
                  maxDepth="2147483647"
                  maxNameTableCharCount="2147483647"/>
    <security mode="TransportCredentialOnly">
        <transport clientCredentialType="None"/>
    </security>
</binding>

そして私が持っているクライアント側:

<binding name="BasicHttpBinding_SilverlightService" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
    <security mode="None" />
</binding>

アップデート

この投稿で提案されているように、バインディングタグから名前を削除しようとしました。

4

1 に答える 1

1

この投稿をご覧になりましたか:

http://smehrozalam.wordpress.com/2009/01/29/retriving-huge-amount-of-data-from-wcf-service-in-silverlight-application/

明らかに dataContractSerializer セクションがカバーされており、他に何か不足していないか疑問に思っています。

于 2013-10-01T08:36:22.820 に答える