构建默认的Net Core 2应用程序,无需授权,并通过VS2017成功进行Web部署发布到Win 7下的远程IIS实例。但是,应用程序无法运行,生成HTTP 500错误。
日志文件显示500.19错误:
字段:日期时间s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent)sc-status sc-substatus sc-win32-status 时间2018-03-29 20:42:20 :: 1 GET / - 81 - :: 1 的Mozilla / 5.0 +(视窗NT + + 6.1 + WOW64; +三叉戟/ 7.0; + RV:11.0)+等+壁虎 500 19 5 296
经过研究,似乎有无数的选项可以设置在IIS下运行。我首先尝试了MS recommendations,这导致了上述错误。
这是web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore"
path="*" verb="*"
modules="AspNetCoreModule"
resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet"
arguments=".\WebApplication1.dll"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout" />
</system.webServer>
</configuration>
这是IIS站点配置:
IIS加载项:
MS Web平台安装程序
Net Core服务器托管
Web部署
MS .NET Core 2.0.6 Windows Server Hosting
问题:
答案 0 :(得分:2)
解决方案是将IIS应用程序池访问权限添加到包含Net Core应用程序的文件夹,如Microsoft文档中所示here。
所以,是的,默认的ASP.NET Core 2应用程序在IIS下运行正常。问题与申请完全无关。
由于这个问题花费了我差不多三天的时间,因为我不了解网络开发和IIS,我会发布这个答案以防其他人遇到同样的问题。
感谢Simonare让我走上了正确的轨道,尽管是间接的。
答案 1 :(得分:1)
这并没有显示有关错误的足够信息。
首先我建议您在web.config下启用stdoutLog。通过包含在program.cs下启用详细的错误日志也是有意义的
UseSetting("detailedErrors", "true")
CaptureStartupErrors(true)
var host = WebHost.CreateDefaultBuilder(args)
.UseSetting("detailedErrors", "true")
.CaptureStartupErrors(true)
.UseKestrel()
.UseStartup<Startup>()
.Build();
此外,您可以尝试在服务器上运行dotnetcore应用程序,方法是在部署目录上打开命令提示符并运行应用程序并执行`dotnet yourApplicatonName.dll
可以在下面找到进一步的故障排除信息
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/troubleshoot
编辑:发布应用程序时,有时需要通过定位远程操作系统版本来发布应用程序。为此,您需要在project.csproj中包含RuntimeIdenfiers
<RuntimeIdentifiers>win10-x64;win7-x64</RuntimeIdentifiers>
可以在中找到运行时标识符的目录 https://docs.microsoft.com/en-us/dotnet/core/rid-catalog
然后您需要更新您的发布配置文件以正确定位远程平台。默认情况下,它是“便携式”