13

小規模から大規模のデータセット(ドキュメント生成)で機能するサービスがあり、一部の呼び出しでは正常に機能しますが、特定のリクエスト(まったく同じメソッド、異なる引数)では次のように返されます。

System.ServiceModel.EndpointNotFoundException:メッセージを受け入れることができるhttp:// localhost:8010 / MyService/MyService.svcでリッスンしているエンドポイントがありませんでした。これは多くの場合、誤ったアドレスまたはSOAPアクションが原因で発生します。詳細については、InnerException(存在する場合)を参照してください。---> System.Net.WebException:リモートサーバーがエラーを返しました:(404)見つかりません。

サービスが機能していることに注意してください。ドキュメントは生成されますが、すべてではありません...(そしてサービスはブラウザから開くことができます)

web.configでトレース(system.diagnostics)をオンにしましたが、svclogにそれ以上の情報がありません。

バインディング(wsHttp)は次のように構成されます。

    <binding name="wsHttpWithTrans" transactionFlow="True" messageEncoding="Mtom"  maxReceivedMessageSize="65536000" maxBufferPoolSize="124288000">
      <readerQuotas maxDepth="32" maxStringContentLength="819200" maxArrayLength="16384000" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <security mode="None">
        <transport clientCredentialType="Windows" proxyCredentialType="None" realm="" />
        <message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" establishSecurityContext="true" />
      </security>
    </binding>

また、次のようなものがあります。

<configuration>
  <system.web>
    <httpRuntime maxRequestLength="124288000" />
  </system.web>
</configuration>

メッセージはmaxReceivedMessageSize、およびその他の属性の制限内に収まる必要があると思います。

現在、メッセージのサイズに疑いがありますが、確信が持てません。これをさらにデバッグするにはどうすればよいかわかりますか?

4

4 に答える 4

22

IIS 7でトレースを使用して失敗した要求をトラブルシューティングする手順を使用して何が問題であるかを見つけました(非常にクールなものです)

そこで、エラーが実際には404.13であることがわかりました。これにより、コンテンツの長さが長すぎるという本当に間違っていることが簡単にわかりました。

結局のところ、解決策はこれをWeb構成に追加することでした。

<configuration>
...
  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="204800000" />
      </requestFiltering>
    </security>
  </system.webServer>  
</configuration>

また、デフォルトのWebサイトが以下を使用してそれを上書きしないことを確認してください。

"%WINDIR%\ System32 \ inetsrv \ appcmd.exe" list config"デフォルトのWebサイト"-section:requestFiltering

于 2011-07-21T08:15:37.887 に答える
4

に加えてmaxAllowedContentLengthmaxRequestLengthWCF構成のサーバー側も増やす必要があることがわかりました。例外を解決するには、両方の値を増やす必要があることがわかりました。WCFサービスサーバー側の.configに、次を追加してください。

<system.web>
  <!--Increase 'maxRequestLength' to needed value: 100mb (value is in kilobytes)-->
  <httpRuntime maxRequestLength="102400"/>
</system.web>
于 2012-11-13T13:51:07.213 に答える
0

メッセージの内容や長さに疑問がある場合は、Fiddlerなどを使用して通話を傍受してみてください。これにより、これらの点に安心できます。

于 2011-07-14T08:36:47.120 に答える
0

web.configのservice要素のname属性を確認してください。

<configuration>
    <system.serviceModel>
        <services>
            <service name="...">

サービス名には、正しい名前空間+クラス名が含まれている必要があります。これは、コード内で見つけるか、.svcファイルのマークアップでService = "..."属性を探す(またはメモ帳で.svcファイルを開く)ことで見つけることができます。

于 2016-02-08T13:28:47.423 に答える