如何配置 .net 核心 API 以在 IIS 中工作?

Posted

技术标签:

【中文标题】如何配置 .net 核心 API 以在 IIS 中工作?【英文标题】:How do I configure a .net core API to work in IIS? 【发布时间】:2018-05-30 19:45:26 【问题描述】:

我在 Visual Studio 2017 中创建了一个运行良好的 .net 核心 API。当我去部署它时,我收到错误消息 HTTP 错误 500.19,错误代码为 0x8007000d。我在网上找到了多种解决方案,例如确保安装了 windows 功能、删除 .net CLR 版本、更改应用程序池标识、更改 web.config 和 applicationHost.config,但没有任何效果。有没有办法明确地找出问题所在,或者我是否被无数可能的解决方案反复试验?您知道任何具体的解决方案吗?

以下是 IIS 设置和我的 Windows 功能的屏幕截图:

这是我的 web.config 文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <!--
    Configure your application settings in appsettings.json. Learn more at     http://go.microsoft.com/fwlink/?LinkId=786380
  -->
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*"
        modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet"
                arguments=".\DishbooksAPI.dll" 
                stdoutLogEnabled="false" 
                stdoutLogFile=".\logs\stdout" 
                forwardWindowsAuthToken="false" />
  </system.webServer>
</configuration>

这是 IIS 错误:

我尝试过的一些 *** 页面(这不是一个详尽的列表):

HTTP Error 500.19 when publish .net core project into iis

HTTP Error 500.19 with Error Code 0x8007000d visual studio 2017 while deploying .net core application

ASP.NET: HTTP Error 500.19 – Internal Server Error 0x8007000d

HTTP Error 500.19 - Internal Server Error web config .net core web api

asp.net core web api published in IIS after moved to different IIS server pc gives error 500.19

【问题讨论】:

在 web.config 中设置 stdoutLogEnabled="true" 并检查登录日志文件的内容。 这能回答你的问题吗? HTTP Error 500.19 with Error Code 0x8007000d visual studio 2017 while deploying .net core application 【参考方案1】:

首先,您需要在网络服务器中安装ASP.NET Core Module。 这是download link。

然后在网络服务器中安装 SDK or Runtime

疑难解答

如果仍然无法正常工作,请打开命令提示符。导航到 Web 应用程序文件夹并键入 dotnet YOUR_APP.dll。你应该看到这样的东西 -

C:\APIs> dotnet YOUR_APP.dll
Hosting environment: Production
Content root path: C:\APIs
Now listening on: http://localhost:5000
Application started: Press Ctrl+C to shut down.

这意味着您的应用程序可以在没有 IIS 的情况下在 Web 服务器中运行。然后你需要在 IIS 或其他一些东西中进行故障排除。

【讨论】:

【参考方案2】:

您需要在 IIS 上安装托管包

https://dotnet.microsoft.com/download/dotnet-core

步骤:

    点击首选版本 搜索“Hosting Bundle”字样(应该在右侧) 安装相同 重新启动 IIS。验证您的网站,看看它的神奇之处

为什么需要托管捆绑包?检查以下文章 https://dotnetcoretutorials.com/2019/12/23/hosting-an-asp-net-core-web-application-in-iis/

如何检查是否安装了主机? How to determine if asp.net core has been installed on a windows server

【讨论】:

以上是关于如何配置 .net 核心 API 以在 IIS 中工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 MVC6 应用程序以在 IIS 上运行?

移动到不同的 IIS 服务器 pc 后在 IIS 中发布的 asp.net 核心 web api 给出错误 500.19 (0x8007000d)

在 IIS (10.0.17763.1) 上托管 .net5.0 核心 Web api 时出现问题

.NET core 3 API,在 Mac 上使用 Visual Studio Code 开发:如何在 IIS 上部署和配置?

IIS 上的 Angular 发布到 Asp.Net(非核心)Web Api 错误 415

如何使用自定义策略模式实现 jwt 令牌基础身份验证以在 .net 核心中进行授权?