0

我们有一个网络服务,直到最近它都运行良好。

在本地调用时,一切正常,但在远程调用时,最多需要 30 秒才能获得响应。不仅适用于 webmethod 调用,还适用于对 asmx 或 wsdl 的普通调用。

跟踪显示从 GetHandler 的返回和对 ProcessRequest 的调用之间的差距。您对当时可能导致问题的原因有任何想法吗(仅适用于远程调用)?

以下是服务日志的摘录,显示了从浏览器访问 .asmx 时的时间间隔:

System.Web.Services.Asmx Information: 0 : Return from IHttpHandlerFactory.GetHandler
Caller: System.Web.Services.Protocols.WebServiceHandlerFactory#23522948::GetHandler()
ProcessId=6420
LogicalOperationStack=
ThreadId=7
DateTime=2013-09-23T14:35:36.3381748Z
Timestamp=3850992018156

System.Web.Services.Asmx Information: 0 : Calling IHttpHandler.ProcessRequest
Caller: System.Web.Services.Protocols.SyncSessionlessHandler#41622463::ProcessRequest()
Request Host Address: **.**.**.**
Request Host Name: ***
Request Url: [GET] http://***/***.asmx
ProcessId=6420
LogicalOperationStack=
ThreadId=7
DateTime=2013-09-23T14:35:48.3970521Z
Timestamp=3851164660296

System.Web.Services.Asmx Information: 0 : Calling Void Documentation()
Method: System.Web.Services.Protocols.DocumentationServerProtocol#31364015::Documentation()
Caller: System.Web.Services.Protocols.SyncSessionlessHandler#41622463::Invoke()
ProcessId=6420
LogicalOperationStack=
ThreadId=7
DateTime=2013-09-23T14:35:48.3970521Z
Timestamp=3851164663918

谢谢

编辑

在将 web 服务与另一个我们进行比较后,我终于找到了问题的根源:它是跟踪本身。一旦禁用evrything远程工作正常。

我知道跟踪需要时间,但 30 秒似乎很多,为什么仅远程调用需要更多时间?正如评论中解释的那样,没有设置身份验证,并且池用户具有足够的权限,因为实际上已写入跟踪。有任何想法吗 ?

这是跟踪设置

<system.diagnostics>
   <trace autoflush="true" />
       <sources>
           <source name="System.Web.Services.Asmx">
               <listeners>
                   <add name="AsmxTraceFile" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\local.log" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId" />
               </listeners>
            </source>
        </sources>
    <switches>
        <add name="System.Web.Services.Asmx" value="Verbose" />
    </switches>
</system.diagnostics>
4

0 回答 0