【问题标题】:Get HTTP 500 error hosting ASP.Net Core MVC app in IIS在 IIS 中托管 ASP.Net Core MVC 应用程序时出现 HTTP 500 错误
【发布时间】:2021-12-11 11:43:46
【问题描述】:

我是 ASP.Net Core 的新手,正在尝试在 IIS 中托管我的第一个简单 MVC 应用程序。我已经安装了 IIS 托管包;使用 Visual Studio 将我的 MVC 项目发布到一个文件夹,然后创建一个 IIS 网站,并将其物理路径设置为已发布的文件夹。但是,当我使用 url http://localhost:5008/home/CallApi 对其进行测试时,我收到一个 500 错误,提示“此页面无法正常工作。localhost 当前无法处理此请求。”。我可以在 VS 中运行 MVC 应用程序(selfhost,而不是通过 IIS,在不同的端口上),它在那里工作正常。我在这里做错了什么?

【问题讨论】:

标签: asp.net-core iis


【解决方案1】:

如果要将 ASP.Net Core MVC 应用程序部署到 IIS,需要安装 .NET Core 主机包,否则会出现“500 错误”。如果你成功安装了 .NET Core 主机包,你可以在 Modules 中找到 AspNetCoreModuleV2:

使用以下链接下载安装程序:

https://dotnet.microsoft.com/download/dotnet-core/thank-you/runtime-aspnetcore-3.1.9-windows-hosting-bundle-installer

添加站点后,您需要将 .NET CLR 版本设置为无托管代码:

有关使用 IIS 在 Windows 上托管 ASP.NET Core 的更多信息,您可以参考此链接:

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-3.1

更新:

我建议您启用查看 PII 日志,以便我们可以查看有关错误的更详细信息:

public void ConfigureServices(IServiceCollection services)
{
    IdentityModelEventSource.ShowPII = true;
    ....

你可以参考这个链接,里面有类似的问题:

"InvalidOperationException: IDX20803: Unable to obtain configuration from: '[PII is hidden]'"

【讨论】:

  • 谢谢丁!正如我在原始帖子中提到的,我已经安装了 IIS 托管包。将 .Net CLR 版本更改为无托管代码没有任何区别。然而,我发现在启用服务器日志后,错误实际上是由以下异常引起的:“System.InvalidOperationException: IDX20803: Unable to get configuration from: '[PII is hidden。有关更多详细信息,请参阅aka.ms/IdentityModel/PII.]' 。”我一直在寻找导致此异常的原因,但到目前为止运气不佳。
  • 谢谢丁。我认为我的问题是由失败的数据库连接引起的。服务器日志包含错误:“使用连接到服务器 '.' 上的数据库 'MyTestIDS' 时发生错误”和“用户 '$' 登录失败”。我在 appsettings.json 中有一个连接字符串定义为“Server=.;Database=MyTestIDS;trusted_connection=True;”直到现在在 IIS 中托管时,它在自托管时运行良好。我检查了我部署的代码并且 appsettings.json 在那里。应用程序是否从 IIS 下的 appsettings.json 读取配置设置?如果没有,我应该把它移到哪里以及如何移动?
  • 我已经找到了问题——连接字符串的格式。当 slfe-hosting 时,我使用了“Server=.;Database=MyTestDB;trusted_connection=True;”它在那里工作得很好。但在 IIS 下,我必须将其更改为“Server=MyServer,MyPort;Database=MyTestDB;user id=MyUsrID;Password=MyPassword”。不知道为什么,但现在我工作正常。
【解决方案2】:

对于那些有同样问题的人,我发现我没有找到任何设置指南提到对我来说是必需的步骤:

  1. 打开 IIS 管理器
  2. 导航到 [服务器]\站点[您的站点]。为您的 .NET 应用程序列出了一个文件夹,但该图标显示为一个普通文件夹,就像在 Windows 资源管理器中一样。
  3. 右键单击文件夹并选择“转换为应用程序”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2017-08-29
    • 2022-07-07
    • 1970-01-01
    • 2021-08-01
    • 2018-07-02
    • 2021-09-11
    相关资源
    最近更新 更多