IIS7在模块WindowsAuthentication中挂起AuthenticateRequest状态

时间:2009-07-14 02:42:08

标签: asp.net iis-7 windows-authentication hang

我正在运行一个ASP.NET应用程序,其中包含在IIS7下注册的自定义模块。

直到两天前,一切都运行良好。现在我注意到请求开始挂起在AuthenticateRequest状态和WindowsAuthentication模块中。我的自定义模块在BeginRequest状态下截获并处理请求并使用HttpContext.Current.ApplicationInstance.CompleteRequest()完成请求处理。它没有处理的请求留给IIS让它们通过其他模块进行处理。

问题(请求挂起)发生在我的自定义模块不处理的页面中。

我应该开始解决此问题的任何想法?我今天在三台不同的机器上一直重现这个问题。我还发现我们在上个月没有更改我们的web.config文件。

非常感谢任何有关解决此问题的帮助。

提前致谢, Charles Prakash Dasari

1 个答案:

答案 0 :(得分:0)

最后我找到了解决问题的方法。

我实现的自定义模块使用异步处理程序:

        context.AddOnBeginRequestAsync(
            new BeginEventHandler(BeginBeginRequest),
            new EndEventHandler(EndBeginRequest)
        );

在我的模块不处理请求的情况下,begin事件处理程序完成请求并且无需执行任何操作。直到几天前,我跳到另一个线程来处理这些请求在Begin方法中,最近我修复了它,这样我只有在我的模块必须处理请求时跳转到另一个线程。现在这导致了这个问题。显然IIS不喜欢我在同一个线程中完成我的处理。

所以现在我再次跳到另一个线程 - 无论如何。 IIS很高兴我的应用程序不再挂起。

我仍然需要进一步调查,并确定为什么会发生这种情况 - 或者它是否真的在IIS中或我从BeginBeginRequest方法返回IAsyncResult的方式。但是现在我知道我必须在另一个线程上处理这个请求。