我试图弄清楚为什么下面的代码null
检查失败并在一段时间后抛出异常,我还没有确定超时的原因是什么,我认为这是我收到异常消息的原因,它通常会发生第二天早上或午休后。但我仍然能够可靠地复制问题。
var prePage = Page.PreviousPage as BasePage;
if (prePage != null)
{
PageSessionField = prePage.PageSessionField;
}
else
{
throw new Exception("Null previous page session exception.");
}
我的第一个猜测是sessionState
超时:
<sessionState cookieless="UseCookies" mode="InProc" timeout="20" useHostingIdentity="false" />
但是我尝试将timeout
值更改为例如 minimum number 1
,但它通常不会按预期抛出异常。
否则,IIS 中的应用程序池设置:空闲超时和回收设置对我来说都很好。
更新:
我已经设法通过等待 30 分钟来复制该问题,然后返回并刷新页面,并将得到由
Page.PreviousPage
is引起的异常null
。看起来超时是由
Owin
使用 Cookie 身份验证的代码引起的。看起来与 AD FS 令牌过期有关,请参阅我收集的证据的答案。