IIS 服务器上的控制器用户对象为空
Controller User object is null on IIS Server
我有一个混合使用表单身份验证的 MVC 和 WebForms 的网站。最近需要从使用 WebForms 切换到 MVC 来处理身份验证,所以我创建了一个带有登录方法的帐户控制器,并创建了相应的视图。如果某人已经通过身份验证并尝试访问 "account/login",我希望他们被重定向到控制器的索引页面,因此我在操作顶部有以下 if 语句:
if(User.Identity.IsAuthenticated)
这条语句在我的开发机器上没有问题;但是,当我将其部署到服务器时,用户对象始终为空。我搜索了 Whosebug 和互联网的其余部分,但尚未找到任何解决问题的方法。
我应该提到 运行 所在的服务器是 Windows Server 2008 Standard 运行 IIS7。
有人知道为什么 User 对象总是 null 吗?我确实看到一个 Whosebug post 提到它是因为 IIS 处理无扩展路由的方式;但是,当我尝试安装 post 中提到的知识库时,它说该知识库不适用于我的服务器。
好的 - 我终于想通了这个问题。
我在这里找到了 post (http://forums.asp.net/t/1689878.aspx?HttpContext+Current+User+always+null+on+IIS+) that said the issue was because they didn't have runAllManagedModulesForAllRequests set to true. I don't want that set to true so I did a little more searching and ran across this Whosebug posting: <modules runAllManagedModulesForAllRequests="true" /> Meaning
我检查了我在 applicationHost.config 文件中的条目,发现它具有 "managedHandler" 的前提条件。一旦我取消了这个先决条件,然后一切都开始按预期工作。奇怪的是,在我的开发环境中,先决条件是存在的,但它毫无问题地工作。可能是因为我的开发箱使用的是IIS 7.5,而服务器使用的是IIS 7.0。
我有一个混合使用表单身份验证的 MVC 和 WebForms 的网站。最近需要从使用 WebForms 切换到 MVC 来处理身份验证,所以我创建了一个带有登录方法的帐户控制器,并创建了相应的视图。如果某人已经通过身份验证并尝试访问 "account/login",我希望他们被重定向到控制器的索引页面,因此我在操作顶部有以下 if 语句:
if(User.Identity.IsAuthenticated)
这条语句在我的开发机器上没有问题;但是,当我将其部署到服务器时,用户对象始终为空。我搜索了 Whosebug 和互联网的其余部分,但尚未找到任何解决问题的方法。
我应该提到 运行 所在的服务器是 Windows Server 2008 Standard 运行 IIS7。
有人知道为什么 User 对象总是 null 吗?我确实看到一个 Whosebug post 提到它是因为 IIS 处理无扩展路由的方式;但是,当我尝试安装 post 中提到的知识库时,它说该知识库不适用于我的服务器。
好的 - 我终于想通了这个问题。
我在这里找到了 post (http://forums.asp.net/t/1689878.aspx?HttpContext+Current+User+always+null+on+IIS+) that said the issue was because they didn't have runAllManagedModulesForAllRequests set to true. I don't want that set to true so I did a little more searching and ran across this Whosebug posting: <modules runAllManagedModulesForAllRequests="true" /> Meaning
我检查了我在 applicationHost.config 文件中的条目,发现它具有 "managedHandler" 的前提条件。一旦我取消了这个先决条件,然后一切都开始按预期工作。奇怪的是,在我的开发环境中,先决条件是存在的,但它毫无问题地工作。可能是因为我的开发箱使用的是IIS 7.5,而服务器使用的是IIS 7.0。