Asp.net IIS服务器上的控制器用户对象为空

Asp.net IIS服务器上的控制器用户对象为空,asp.net,asp.net-mvc,forms-authentication,Asp.net,Asp.net Mvc,Forms Authentication,我有一个混合了MVC和WebForms的站点,它利用表单身份验证。最近需要从使用WebForms来处理身份验证切换到MVC,所以我创建了一个带有登录方法的帐户控制器,并创建了相应的视图。如果某人已通过身份验证并试图访问“帐户/登录”,我希望他们被重定向到控制器的索引页,因此我在操作顶部有以下If语句: if(User.Identity.IsAuthenticated) 我的开发机器上的此声明没有问题;但是,当我将其部署到服务器时,用户对象总是空的。我已经在stackoverflow和互联网的其

我有一个混合了MVC和WebForms的站点,它利用表单身份验证。最近需要从使用WebForms来处理身份验证切换到MVC,所以我创建了一个带有登录方法的帐户控制器,并创建了相应的视图。如果某人已通过身份验证并试图访问“帐户/登录”,我希望他们被重定向到控制器的索引页,因此我在操作顶部有以下If语句:

if(User.Identity.IsAuthenticated)
我的开发机器上的此声明没有问题;但是,当我将其部署到服务器时,用户对象总是空的。我已经在stackoverflow和互联网的其他地方搜索过了,还没有找到任何解决这个问题的方法

我应该提到的是,它运行的服务器是运行IIS7的Windows server 2008标准


有人知道为什么用户对象总是空的吗?我确实看到一篇stackoverflow帖子提到这是因为IIS处理无扩展路由的方式;然而,当我试图安装那篇文章中提到的知识库时,它说知识库不适用于我的服务器。

好的-我终于解决了问题

我在这里找到一篇帖子()说问题是因为他们没有将runAllManagedModulesForAllRequests设置为true。我不希望将其设置为true,因此我进行了更多搜索,并浏览了以下stackoverflow帖子:


我检查了applicationHost.config文件中的条目,发现它的前提条件是“managedHandler”。一旦我取消了先决条件,然后一切都按预期开始工作。奇怪的是,在我的开发环境中,先决条件是存在的,但它没有问题。可能是因为我的开发包使用IIS 7.5,而服务器使用IIS 7.0。

您是否在web.config上执行任何转换?您是否对暂存配置和生产配置之间的文件进行了区分?我比较了我的开发配置和暂存配置文件,文件之间的大部分差异与应用程序设置相关或与端点相关-我没有发现任何让我觉得应该对此问题负责的内容。