IIS服务器上的控制器用户对象为空
我有一个站点是混合使用表单身份验证的MVC和WebForms。最近需要从使用WebForms切换到MVC身份验证,因此我使用Login方法创建了一个Account控制器并创建了相应的视图。如果有人已经通过身份验证,并试图进入“账号/登录”,我想让他们被重定向到控制器的索引页,所以我已经if语句在行动顶部以下内容:IIS服务器上的控制器用户对象为空
if(User.Identity.IsAuthenticated)
有在我的开发机器上这个声明没有问题;但是,当我将其部署到服务器时,User对象始终为空。我搜索了stackoverflow和互联网的其余部分,但还没有找到任何解决了这个问题的东西。
我应该提到运行的服务器是运行IIS7的Windows Server 2008 Standard。
任何人有任何想法,为什么用户对象始终为空?我看到一个提到它是因为IIS处理无扩展路由的方式而发布的stackoverflow帖子;但是,当我试图安装该帖子中提到的KB时,它说KB不适用于我的服务器。
好的 - 我终于明白了这个问题。
我在这里找到一个帖子(http://forums.asp.net/t/1689878.aspx?HttpContext+Current+User+always+null+on+IIS+),说这个问题是因为他们没有将runAllManagedModulesForAllRequests设置为true。我不希望该设置为真,所以我做了一些更多的搜索,并跑过这个计算器发布:<modules runAllManagedModulesForAllRequests="true" /> Meaning
我在applicationHost.config文件中检查了我的条目,发现它具有“managedHandler”的前提条件。一旦我把这个先决条件关闭了,那么一切都按预期开始工作。奇怪的是,在我的开发环境中,前提是在那里,但它没有问题。也许是因为我的开发盒使用IIS 7.5而服务器使用IIS 7.0。
你在web.config上执行任何转换吗?您是否在分段和生产配置之间完成了文件差异? –
我比较了我的开发和登台配置文件,并且文件之间的大部分差异与appsetting相关或端点相关 - 我没有看到任何让我感到担心的问题。 –