导航到不同的控制器时会话变量丢失(& AJAX 请求),但是在 Session_Start 期间设置的会话变量是完整的

Session variables getting lost when navigating to a different controller (& AJAX requests), however session vars set during Session_Start is intact

这个问题是关于我们在使用 windows 身份验证的基于 .net 框架的 MVC 应用程序中遇到的问题。在 Session_Start 期间设置的变量似乎很好并且始终可用,但事后设置的任何会话变量似乎都丢失了。在下面的输出中,第一行是我们设置会话变量的地方。例外是当我试图在不同的页面中访问它时。但是,如果您注意到 Session_Start 期间设置的其他会话变量仍然可用。这是第 1 期。

Current session value (home): zero
---
(different page)
System.NullReferenceException: Object reference not set to an instance of an object.
   at ---removed---
   at ---removed---
Id (from session): 0
Name (from session): Admin
Email (from session): admin@admin.com

我们进一步探索,似乎 AJAX 请求正在创建一个全新的会话。这是问题 2。我们已经尝试了很多事情 - 将 $.ajax 调用更新为 xhrfields/withCrdentials,尝试使用 FriendlyUrls 包设置 AutoRedirectMode,尝试忽略一些建议的路由等。但没有任何效果帮助。因此,我们将不胜感激任何与此相关的建议。

谢谢!

我们发现了问题。看起来某些进程(很可能是 anti-virus)正在扰乱 bin 目录,导致应用程序一次又一次地重新启动。所以我们将 fcnMode 属性添加到 httpRuntime 元素并将其设置为 Disabled 以便暂时禁用该行为。