gpt4 book ai didi

WCF 跟踪。如何获得关闭连接的确切原因?

转载 作者:行者123 更新时间:2023-12-02 17:33:46 29 4
gpt4 key购买 nike

在我的 WCF 服务中,当尝试传输大数据时,我不断收到错误:底层连接已关闭:连接意外关闭

我想知道引发此错误的具体原因,因此我设置了 WCF 跟踪并可以读取 traces.svclog 文件。

问题是,我可以在这个文件中看到很多有关流程流程的信息,我可以看到出现异常的确切时间,但我看不到出现异常的确切原因。是由于 MaxReceivedMessageSize 还是类似的原因。

是否是 traces.svclog 不能包含此类信息,或者我做错了什么?

如何获得此类信息?

编辑(添加):

来 self 的服务器端 app.config:

    <system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="NAVBinding_ICustomer_Service"
closeTimeout="01:50:00"
openTimeout="01:50:00" receiveTimeout="01:50:00" sendTimeout="01:50:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147483647" maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647" messageEncoding="Text"
textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name = "Customer_Service" behaviorConfiguration="returnFaults">
<endpoint name="NAVBinding_ICustomer_Service"
address = "http://localhost:8000/nav/customer"
binding = "basicHttpBinding"
bindingConfiguration= "NAVBinding_ICustomer_Service"
contract = "NAVServiceReference.ICustomer_Service"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="returnFaults" >
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>

编辑(添加):

将 WCF 服务从“黑匣子”转变为易于排除故障的服务(它可以说明某些事情未按预期方式进行的原因)的正确且最佳的方法是什么?您使用哪些工具、技术来排除 WCF 服务故障?

最佳答案

忽略 maxRequestLength 的问题(其他人已回答),我将尝试回答您最初提出的有关如何排除 WCF 故障的问题。

如果您已经在使用服务跟踪查看器(我无法从问题中看出如果您只是用手查看它们) - 可能所有细节都不是进入文件。

当我想要变得真正硬核时,我启用所有日志记录参数消息记录。 (这会生成一些大的服务日志,所以不要离开开启)

 <system.serviceModel>
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="-1" />
</diagnostics>
</system.serviceModel>

如果您不使用 Microsoft 服务跟踪查看器,我建议您这样做。它提供了我追踪那些棘手的消息握手、消息所需的所有信息尺寸异常等。这里有一个 MSDN 引用可以帮助您入门 http://msdn.microsoft.com/en-us/library/aa751795.aspx

存在潜在问题的跟踪交互在屏幕上以黄色突出显示左侧,右上角的详细 Pane 通常会突出显示特殊的红色的服务事件。有时你会因为内在的原因而遇到多个问题错误通过服务堆栈级联 - 但您可以在跟踪查看器。

Troubleshooting Using the Service Trace Viewer

如果您的服务器“服务日志”中没有任何内容,那么您的异常可能完全发生在客户端 - 理论上您可能会超出某些客户端在任何消息实际到达之前的侧面安全参数(消息大小等)Web 服务端 - 但客户端问题通常更容易追踪,因为您知道您只需要担心在客户端编辑配置文件(即,这不是因为客户端和服务器设置之间的任何交互)。

关于WCF 跟踪。如何获得关闭连接的确切原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1933956/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com