c# - 发布到 IIS 后.Net 核心服务不可用

标签 c# visual-studio windows-server-2008 iis-8.5

在我尝试访问 IIS 时发布了我的 up 之后,出现错误: 服务不可用

HTTP Error 503. The service is unavailable.

接下来我该做什么?

我使用 Windows Server 2008(64 位)和 IIS 8.5。该应用程序是 web api .NET CORE 2.2.1。

在我安装的 Windows 机器上:

  • Microsoft .NET CORE 2.2.1 - Windows 服务器托管
  • Microsoft .NET 核心运行时 - 2.2.1(x64)
  • Microsoft .NET 核心运行时 - 2.2.1(x86)
  • Microsoft Visual C++ 2015 Redistributable(x86) - 14.024212
  • Microsoft Visual C++ 2015 Redistributable(x64) - 14.024123
  • Microsoft Visual C++ 2008 Redistributable - x86 - 9.0.30729.4148
  • Microsoft Visual C++ 2008 Redistributable - x64 - 9.0.30729.6161

我从 Visual Studio 制作了一份出版物。在我有 AspNetCoreModuleV2 的模块上进入 IIS。

我的 webconfig 文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath=".\App.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
   </system.webServer>
 </location>
</configuration>
<!--ProjectGuid: 9d04b7be-318b-4e95-aae3-c47aab07db30-->

CreateWebHostBuilder 方法中的代码:

 return WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>().UseSerilog((ctx, cfg) =>
            {
                cfg.ReadFrom.Configuration(ctx.Configuration)
                    .MinimumLevel.Verbose()
                    .MinimumLevel.Override("Microsoft", LogEventLevel.Information);
            });

最佳答案

您可以检查以下步骤来检测问题。

  1. 确保安装了 .net 核心运行时和 AspNetCoreModule 并且安装后重新启动操作系统
  2. 确保您的应用程序池 .Net 框架版本在 iis 上是“无托管代码”。
  3. 确保您的应用程序正常预热。 (在您的应用程序所在的目录中打开命令提示符。键入 dotnet yourapp.dll 然后按 enter。)
  4. 如果您的应用程序在 IIS 下运行并且您设置了与 https 的绑定(bind),则在运行 dotnet yourapp.dll 默认情况下,如果您未在 Program.cs 上指定对 UseUrls 的调用,它将在本地主机上运行。然后你可以调用你的dotnet yourapp.dll,它会工作

    var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup() .UseUrls("http://mywebsite.com ") .Build();

  5. 如果应用使用 dotnet 命令正常启动,请检查日志文件位置 (".\logs\stdout") 的访问级别。要赋予 applicationpool 用户读取和写入的能力,请执行以下步骤 https://stackoverflow.com/a/7334485/4172872

更新:

应用程序的扩展名真的是“.exe”吗?

<aspNetCore processPath=".\App.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />

关于c# - 发布到 IIS 后.Net 核心服务不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54665323/

相关文章:

c# - 使用状态模式的分层状态机的最佳实践是什么?

c++ - 如何在windows上安装<QtCharts>

windows - 请求的 IIS 文件授权失败

iis - Applicationhost.config 未显示更改

c# - Equals 和 GetHashCode 中延迟加载的 NHibernate 属性

C# WPF 在按下按钮时执行操作

c# - String.Format 和文化

c# - 将列表框的选定项目传递到 xaml

visual-studio - Visual Studio 脚本未正确设置环境变量

.net - 为特定密码启用 TLS 1.2