在我尝试访问 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);
});
最佳答案
您可以检查以下步骤来检测问题。
- 确保安装了 .net 核心运行时和 AspNetCoreModule 并且安装后重新启动操作系统。
- 确保您的应用程序池 .Net 框架版本在 iis 上是“无托管代码”。
- 确保您的应用程序正常预热。 (在您的应用程序所在的目录中打开命令提示符。键入
dotnet yourapp.dll
然后按 enter。) 如果您的应用程序在 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();
如果应用使用 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/