繁体   English   中英

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

[英]ASP.NET session issues on a production server

这是一个非常模糊的问题,因为我没有运气在生产Web服务器之外重现我的问题,并且不确定我的两个问题是否相关。

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

该应用程序以前是针对.NET 1.1运行的,去年已迁移至3.5。 该数据库是SQL Server 2000,并于今年初在单独的发行版中进行了更新。

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

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

第一次发生在报表中,并在ReportViewer控件中触发。 我们的用户很少会尝试处理报告(我发现了特定用户和报告组合的一种可重复使用的情况-当我尝试更改报告页面时,总是会抛出异常)。

异常调用堆栈如下所示:

Microsoft.Reporting.WebForms.AspNetSessionExpiredException:ASP.NET会话已过期或无法在Microsoft的Microsoft.Reporting.WebForms.ReportDataOperation..ctor()的Microsoft.Reporting.WebForms.ViewerDataOperation..ctor()处找到。 System.Web上Microsoft.Reporting.WebForms.HttpHandler.ProcessRequest(HttpContext上下文)处的Reporting.WebForms.HttpHandler.GetHandler(String operationType)System.Web处的System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值,已完成同步)

该Web应用程序被配置为使用InProc状态存储,因此根据我读过的一些博客,第二个IIS进程将无法定位用户的会话-这就是这种异常的普遍含义。 我可以看到IIS将其他请求传递到另一个工作进程中……除了该站点配置为使用单个进程之外。 不应引发此异常-因此,要么是IIS GUI工具对Web应用程序配置为单进程的谎言,要么是异常消息未描述真正的问题。

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

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

除了生产以外,它在所有服务器上都可以正常工作。 当我在生产环境中启用它时,每个用户都有以下经验:

1)点击登录页面,输入凭据,登录2)单击主页上的任何链接3)引导回登录屏幕。 重新输入凭据,登录。4)该站点现在可以正常工作,直到用户注销。

同样,此问题仅存在于该生产服务器上,而在我的开发机,测试服务器或公共演示服务器上无法重现。

他们有关系吗? 也许吧,也许不是。 由于可用的诊断信息很少,因此我几乎没有想法。 如果有人遇到类似问题或有新的想法,我可以拒绝,我将非常感激。

我能够解决这两个问题。

第二个问题(必须登录两次)不再重现。 我确实在尝试进行另一项可能已修复的修复程序时重新注册了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浏览器触发。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM