Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF存在且部分工作,但对于某些呼叫返回“;无端点侦听-(404)未找到。”;_C#_Wcf_.net 4.0_Http Status Code 404_Mtom - Fatal编程技术网

C# WCF存在且部分工作,但对于某些呼叫返回“;无端点侦听-(404)未找到。”;

C# WCF存在且部分工作,但对于某些呼叫返回“;无端点侦听-(404)未找到。”;,c#,wcf,.net-4.0,http-status-code-404,mtom,C#,Wcf,.net 4.0,Http Status Code 404,Mtom,我们的服务可以处理从小到大的数据集(文档生成),对于某些调用,它可以正常工作,但对于某些特定请求(完全相同的方法,不同的参数),它只返回: System.ServiceModel.EndpointNotFoundException:上没有可接受消息的侦听终结点。这通常是由不正确的地址或SOAP操作引起的。有关更多详细信息,请参阅InnerException(如果存在)。->System.Net.WebException:远程服务器返回错误:(404)未找到 请注意,服务正在运行,文档已生成,但正

我们的服务可以处理从小到大的数据集(文档生成),对于某些调用,它可以正常工作,但对于某些特定请求(完全相同的方法,不同的参数),它只返回:

System.ServiceModel.EndpointNotFoundException:上没有可接受消息的侦听终结点。这通常是由不正确的地址或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
和其他属性的范围内


目前,我对消息的大小表示怀疑,但无法确定-您知道如何进一步调试此消息吗

如果您对消息的内容和/或长度有怀疑,您可以尝试使用类似的方法拦截呼叫-这将使您在这些问题上放心。

我使用上的说明(非常酷的东西,顺便说一句)发现了问题所在

在那里,我发现错误实际上是404.13,这很容易让我找到真正的错误:内容长度太大

最后,解决方案是将以下内容添加到web配置中:

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

...
此外,请确保默认网站不会使用以下命令覆盖它:

“%WINDIR%\System32\inetsrv\appcmd.exe”列表配置“默认网站”-部分:请求筛选


我发现除了
maxAllowedContentLength
,WCF配置中服务器端的
maxRequestLength
也需要增加。我发现这两个值都必须增加才能解决异常。在WCF服务服务器端的.config中,确保添加以下内容:

<system.web>
  <!--Increase 'maxRequestLength' to needed value: 100mb (value is in kilobytes)-->
  <httpRuntime maxRequestLength="102400"/>
</system.web>

检查web.config中服务元素的name属性:

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

服务名称应包含正确的命名空间+类名。
您可以在de代码中或通过查找Service=“…”属性的.svc文件的标记(或使用记事本打开.svc文件)来找到它。

我无法安装fiddler,因为它位于生产服务器上。。。虽然我会尝试由系统管理员运行它,但我不希望它会被批准…如果您可以从本地浏览器访问该服务,您可以在本地安装fiddler(事实上,理想情况下,它应该安装在本地)-它只截获HTTP通信,因此您应该可以很好地查看通信通道。是的,我知道了,但问题在于驻留在同一台服务器上的多个WCF服务之间的通信。我已经安装了它,大小约为40mb。。。这在wcf的长度限制之内。。。您还有其他建议吗?请看-需要同时显示这两个值,默认情况下这两个值都不够大。在我的测试中,没有一个人能独立地解决这个问题。工作就像魔术一样,我花了一整天的时间寻找答案,这也是我的问题。从iis返回的错误为404,但更改此限制修复了该问题。WebException中的substatuscode不可用: