C# WCF存在且部分工作,但对于某些呼叫返回“;无端点侦听-(404)未找到。”;
我们的服务可以处理从小到大的数据集(文档生成),对于某些调用,它可以正常工作,但对于某些特定请求(完全相同的方法,不同的参数),它只返回: System.ServiceModel.EndpointNotFoundException:上没有可接受消息的侦听终结点。这通常是由不正确的地址或SOAP操作引起的。有关更多详细信息,请参阅InnerException(如果存在)。->System.Net.WebException:远程服务器返回错误:(404)未找到 请注意,服务正在运行,文档已生成,但正如我所说的,并非所有文档都已生成。。。(并且可以从浏览器中打开服务) 我在web.config中打开了跟踪(system.diagnostics),但在svclog中没有进一步的信息 绑定(wsHttp)配置为: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)未找到 请注意,服务正在运行,文档已生成,但正
<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不可用: