【问题标题】:When might Application_EndRequest not be called?什么时候可以不调用 Application_EndRequest?
【发布时间】:2010-09-01 10:28:12
【问题描述】:

我们在 IIS 6 中托管了一个 ASMX Web 服务,并且发现我们的 WebMethods 之一出现了一些奇怪的行为。在iisreset 之后,对特定方法的第一次调用无法返回到客户端,并在 60 秒后超时。

我在Global.asax.cs 文件中介绍了登录Application_BeginRequestApplication_EndRequest。日志显示,对于那一次调用,未调用 EndRequest。方法本身中的 try-finally 块表明它正在运行完成。

在此之前、期间和之后对不同方法的其他请求显示没有问题。 TcpTrace 显示,对于该方法的第一个请求,从未返回任何回复。

日志还显示为请求提供服务的线程在 finally 块完成后开始为其他请求提供服务。

我想知道是什么导致了这种行为,以及如何进一步调试。

【问题讨论】:

    标签: c# .net web-services tcptrace-pocketsoap


    【解决方案1】:

    假设这是完全可重复的,我将从更改方法开始。也就是说,我会删除一些东西,直到它按预期工作。

    听起来 Web 方法本身会导致一些奇怪的次要行为。我猜这比将两个数字相加并返回结果要复杂一些。

    我也会密切关注该方法的作用。例如,它是否在实例化非托管资源?您是否有任何涉及的 http 处理程序或模块可能会在此方法的第一次执行时崩溃?

    通过消除代码直到它起作用,您将确切地找出导致这种情况的原因。

    【讨论】:

      【解决方案2】:

      一些建议: 将您的日志记录在: Application_AuthenticateRequest 应用程序错误 看看你是否得到任何错误。

      如果这不起作用,请检查您的应用程序域和 IIS 的事件日志

      【讨论】:

        猜你喜欢
        • 2011-02-24
        • 1970-01-01
        • 1970-01-01
        • 2019-12-25
        • 1970-01-01
        • 2011-04-02
        • 2012-09-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多