生产服务器上的ASP.NET会话问题

时间:2010-09-27 21:23:02

标签: asp.net iis iis-6 windows-server-2003 reportviewer

这是一个非常模糊的问题,因为我没有运气在我们的生产网络服务器之外复制我的问题,我不确定我的两个问题是否相关。

我的应用服务器正在运行Windows Server 2003,面向公众。 ASP.NET Web应用程序在.NET 3.5中运行,并在LAN上使用(私有)SQL Server(2008)。运行SQL Server的服务器还承载SQL Server Reporting Services,这些服务通过包含MS ReportViewer控件的页面在我们的Web应用程序中使用。

该应用程序曾用于针对.NET 1.1运行,并于去年迁移到3.5。该数据库是SQL Server 2000,今年早些时候在另一个版本中进行了更新。

我在部署中遇到两个奇怪的问题,必须是基于配置的,但我已经没有嫌疑人了。

这两个问题都与用户会话丢失有关。

第一个出现在报告中,并在ReportViewer控件中触发。我们的用户很少会尝试操作报告(我发现了一个特定用户和报告组合的可重现案例 - 当我尝试更改报告页面时总会抛出异常。)

异常调用堆栈如下所示:

  

Microsoft.Reporting.WebForms.AspNetSessionExpiredException:ASP.NET会话已过期或无法找到      在Microsoft.Reporting.WebForms.ViewerDataOperation..ctor()      在Microsoft.Reporting.WebForms.ReportDataOperation..ctor(Boolean requiresFullReportLoad)      在Microsoft.Reporting.WebForms.HttpHandler.GetHandler(String operationType)      在Microsoft.Reporting.WebForms.HttpHandler.ProcessRequest(HttpContext context)      在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()      在System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)

Web应用程序配置为使用InProc状态存储,因此第二个IIS进程无法找到用户的会话 - 这就是这个异常通常意味着什么,根据我读过的一些博客。 我可以看到IIS将其他请求汇集到另一个工作进程...除了站点配置为使用单个进程。不应抛出此异常 - 因此IIS GUI工具对我说谎的Web应用程序被配置为单进程,或者异常消息没有描述真正的问题。

我在IIS中创建了一个新的应用程序池,它被配置为每10000个请求以及凌晨2点回收工作进程。 (10000请求规则是解决可能存在或可能不存在的问题的旧解决方案 - 关于它的问题和信息早于我,我不倾向于尝试它) 在性能选项卡中,最大工作进程数设置为1.

我能想到的唯一解决方法是遵循ReportViewer用户所说的内容,即将状态服务器模式从InProc切换为使用进程外序列化模型。我选择了ASP.NET状态服务器。

除了生产之外,它在每个服务器上运行良好。当我开始制作时,每个用户都有这样的经历:

1)点击登录页面,输入凭据,登录 2)单击主页上的任何链接 3)重新登录登录屏幕。重新输入凭据,登录。 4)网站现在正常工作,直到用户退出。

再一次,这个问题只存在于该生产服务器上,并且在我的开发机器,测试服务器或公共演示服务器上无法重现。

他们有关系吗?也许,也许不是。由于缺乏可用的诊断信息,我几乎没有什么想法。如果有人发现这样的事情,或者想到一条新的道路我可以走下去,我真的很感激。

1 个答案:

答案 0 :(得分:2)

我能够解决这两个问题。

第二个问题(必须登录两次)不再可重现。我尝试重新注册ASP.NET(aspnet_regiis),同时尝试另一个可能修复它的修复,或者其他无关的配置更改。

主要问题是ReportViewer控件中的错误。无论出于何种原因,ASP.NET开始记录更多导致我报告的异常的异常,并且我得到了一个根本原因的暗示,这在此Connect问题中有所概述:

https://connect.microsoft.com/VisualStudio/feedback/details/556989/blank-gif-resource-generates-server-error-in-reportviewer-in-non-ie-browsers?wa=wsignin1.0#tabs

我也在那里发布了一个解决方法。这是为ReportViewer提供信息的Web服务中的一个错误。该错误仅被非IE浏览器绊倒。