【问题标题】:MVC Authentication not working in IIS (works in IIS Express)MVC 身份验证在 IIS 中不起作用(在 IIS Express 中起作用)
【发布时间】:2020-12-26 21:36:01
【问题描述】:

我创建了一个具有个人身份验证的 MVC 项目,并且正在使用默认模板。当我从 Visual Studio (IIS express) 中启动应用程序时,我能够查看所有公共页面、注册帐户并登录。一切都很好。

但是,当我发布项目并将其托管在完整的 IIS 服务器上(在 Windows Server 2016 上)时,我可以查看所有公共页面,但注册或尝试登录会产生以下一般错误:

我在项目中使用 LocalDb,我注意到部署的应用程序上的 Windows 身份是“NT AUTHORITY\SYSTEM”,而 IIS Express 应用程序的身份是 USER-DESKTOP\User。此错误是由权限问题引起的吗?如果是,您如何解决此问题?

另外,将 localDB 用于已部署的项目是不是很糟糕?将只有两个用户使用该应用程序,并且他们都是受信任的。

【问题讨论】:

  • 对我来说看起来像 ASPNETCORE_ENVIRONMENT 变量值错误,你是在 IIS 中设置的吗?
  • ASPNETCORE_ENVIRONMENT 在项目的 launhSettings.jason 文件中设置为 Development.... 但我没有在 IIS 中设置任何内容。我只是做了一些简单的研究,但仍然不能 100% 确定如何在 IIS 中设置它们。你能详细说明一下吗?
  • 如果您的托管应用的根目录中有 web.config 文件,您可以在 aspNetCore 部分添加环境变量
  • 如果没有这个文件你可以通过IIS管理器andrecarlucci.com/en/…进行配置

标签: c# asp.net asp.net-core iis windows-server-2016


【解决方案1】:

在已部署的项目中使用 localDB 完全不是一个好主意,
它仅用于开发人员测试。

当你在 vs 中开始调试时,localDB 就启动了。

如果你使用 SQL Express 会更好
https://go.microsoft.com/fwlink/?linkid=866658

【讨论】:

    【解决方案2】:

    尝试按照以下步骤将您的站点应用程序池标识设置为本地系统:

    1)打开 iis 管理器

    2) 转到应用程序池并选择您的应用程序池名称。

    3)点击高级设置。

    4)有一个“Process Model”选项,在其下有一个“Identity”选项。默认情况下,这是应用程序池标识。将其更改为本地系统,您就完成了。

    将“加载用户配置文件”设置为 True。

    【讨论】:

      猜你喜欢
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      • 1970-01-01
      • 2017-02-01
      • 2019-01-20
      • 1970-01-01
      • 2022-01-25
      相关资源
      最近更新 更多