VS2019 MVC4 WebSite IIS Express 表单认证

VS2019 MVC4 WebSite IIS Express Forms Authentication

我们正在将我们的 MVC4 Web 应用程序从使用框架 4.0 和多个其他 NuGet 包的 VS2013 移出到 VS2019。我对代码进行了分支并为转换映射了一个新位置。

我已经成功构建了所有内容。该站点使用表单身份验证。但是,当我尝试调试站点时,IPrincipal 被设置为 WidnowsIdentity(我的域帐户),运行 IIS Express 需要它。就好像 IIS Express 只是对登录用户使用开发服务器设置中的 windows 身份验证。

我没有对这些设置进行任何更改,因此匿名身份验证和 Windows 身份验证都已启用。托管管道模式是集成的。但是我从来没有进入登录页面,它完全绕过并将用户设置为我的域

然而,如果我打开项目 VS2013 项目,它会像往常一样工作。我知道 VS2019 为 applicationhost.config 文件创建了一个 .vs 文件夹。我弄乱了那个文件,但我仍然无法将其下载到 运行。

更新:

提供更多信息。我以前没有注意到这一点,但在调试时我注意到由于某种原因它正试图按应有的方式转到我们的帐户控制器,但它正在寻找登录操作。我们没有名为登录的操作,但我们有 GET 和 POST 登录。

我也检查了 web.config 文件以确保它没有被以某种方式更改并且它仍然是 ~/Account/LogOn。我已经在代码中搜索了名为“登录”的任何内容。

我什至尝试更改表单身份验证的 loginUrl 属性,但它似乎并没有读取它。

发布原因并为可能 运行 遇到问题的任何其他人修复。

所以经过无数次的搜索、失败的尝试和数小时的调试后,这一切都归结为问题,无论出于何种原因,在 VS2013 中都没有出现,但在 VS2019 中出现了。

几年前我们从 MVC3 迁移到 MVC4,甚至在我们迁移到 VS2013 之前,或者大约在我们迁移的同一时间。基于我终于在此处找到的两个 post 引导我找到我的解决方案。

第 1 期

首先是重定向到错误的登录页面。我们调用我们的 LogOn,但它被重定向到 Login。

修复是将以下内容添加到 appSettings 中:

<add key="loginUrl" value="~/Account/LogOn" />

这是 link 到 post 的解释,为了感谢,Post

第 2 期

我仍然 运行 遇到的另一个问题是,当默认页面最初被点击时,即使被正确重定向到登录页面,仍然将用户设置为 WindowsIdentity

再次修复是将以下行添加到 appSettings:

<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>

这是 link 对那个 post 的解释,为了感谢,Post