IIS 7工作进程挂起共享应用程序池。其中一个网站工作正常

时间:2013-11-01 11:51:07

标签: asp.net asp.net-mvc vb.net iis stateserver

我有两个共享应用程序池.Net V4.0 Integrated的网站 一个网站为ASP.NET MVC 4,另一个网站为VB.NET Website

他们共享登录信息和服务器会话,两者都包含web.config

中的以下内容
<authentication mode="Forms">
  <forms loginUrl="http://www.example.com/login.aspx" name=".MYCUSTOMAUTH" protection="All" path="/" domain=".example.com" timeout="30" />
</authentication>
<httpCookies domain=".example.com" />
<sessionState mode="StateServer" stateConnectionString="tcpip=loopback:42424" />
<machineKey validationKey="XXX" decryptionKey="XXX" validation="SHA1" />

我还使用以下内容在global.asax Application_Start中设置应用程序名称:

FieldInfo runtimeInfo = typeof(HttpRuntime).GetField("_theRuntime", BindingFlags.Static | BindingFlags.NonPublic);
HttpRuntime theRuntime = (HttpRuntime)runtimeInfo.GetValue(null);
FieldInfo appNameInfo = typeof(HttpRuntime).GetField("_appDomainAppId", BindingFlags.Instance | BindingFlags.NonPublic);
appNameInfo.SetValue(theRuntime, "MyApplicationName");

位于www.example.com的主站点显示登录屏幕,正确登录时会创建一个对象会话,用户将被重定向到subdomain.example.com。 问题是Worker线程只是无限期地挂起每个线程。当我昨晚6点离开时,这个设置正常工作,但是当我今天上午9点尝试登录时,它没有停止工作。

我重新部署了两个站点,回收了应用程序池,删除并创建了新的应用程序池,重新启动了ASP.NET状态服务。一切都重新启动整个IIS服务,直到周日凌晨3点才真正开始使用... ... 即使重新启动IIS服务器也可以暂时解决问题,如果问题仍然存在,那么每天都无法完成。

此外,服务器永远不会超时连接,并且事件日志中不会产生任何错误或警告,除非我手动结束该过程。

1 个答案:

答案 0 :(得分:0)

他们确实需要在同一个应用程序池中才能共享会话信息 如果您尝试使用它,它会在回收应用程序池后立即挂起吗?

您需要确定导致其挂起的操作 - (例如,在任一站点上单击登录按钮)。你为什么使用customauth而不是表单auth?