我们最近将Web服务器升级到Win2012(从2008年开始)并开始使用ActiveDirectory。主网站使用用C#编写的外部订单表单(ASP.NET 2.0)。在迁移之前,旧服务器中的一切都运行良好。现在,当我尝试在IE 11中读取Session变量时,我会遇到错误(一切都适用于其他浏览器)。
这是导致它的行所导致的错误:
Server Error in '/' Application.
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
Line 974: private void WriteTextConfirmation ()
Line 975: {
Line 976: string sFolders_OrderForm = Session ["Folders_OrderForm"].ToString ();
Line 977: string sOrderNumber = Session ["OrderNumber"].ToString ();
Line 978:
源文件:d:\网站\订单表格\ SubmitOrder.aspx.cs专线:976
堆栈追踪:
[NullReferenceException: Object reference not set to an instance of an object.]
SubmitOrder.WriteTextConfirmation() in d:\Web Sites\Order Form\SubmitOrder.aspx.cs:976
SubmitOrder.Page_Load(Object sender, EventArgs e) in d:\Web Sites\Order Form\SubmitOrder.aspx.cs:1189
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +24
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +41
System.Web.UI.Control.OnLoad(EventArgs e) +131
System.Web.UI.Control.LoadRecursive() +65
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2427
问题是正在读取的Session变量为null。它们应该在Default表单中设置并传递以在SubmitOrder表单中使用。这些变量适用于FireFox和Chrome,但在IE中失败。我不确定为什么会这样。
答案 0 :(得分:0)
由于您说它是特定于浏览器的,因此必须是浏览器的设置。也许你关闭了cookie?
<强>更新强> 我做了一些搜索,看起来它仍然可以与cookie相关。
Session variable empty in iis7 application
此问题的另一个常见原因是服务器名称包含时 下划线(例如DEV_TEST)。下划线不允许作为主机名, 并且可能会干扰设置cookie的能力。
此服务器故障问题有几个答案说同样的事情: https://serverfault.com/questions/178733/iis-7-0-does-not-keep-session-variables
另一个SO问题强调:: IE8 does not keep Session Variables
Google的更多信息:https://www.google.com/search?q=iis+application+session+variables+IE
答案 1 :(得分:0)
我们遇到了同样的问题,并在Web.config中将会话状态设置为cookieless修复了我们的问题。