我有一个MVC Core应用程序,在VS和IIS Express内部以调试模式运行完美。然而,当我在Release
配置下发布到IIS 10时,单击Login
链接时发生错误。该站点显示完全无用的默认错误页面,该页面是MVC应用程序的VS项目模板的一部分。此页面中唯一有用的信息是出现错误,并且:
交换到开发环境将显示更详细 有关发生的错误的信息。
所以我小心翼翼地清理了IIS中指向网站的发布文件夹,并再次发布了应用程序,这次是在Debug
config下。
然而,我仍然得到完全相同的无用错误页面。这是IIS的问题,还是我做错了什么?
答案 0 :(得分:3)
Debug/Release
配置与Development/Production
环境无关。查看此Environments section和Hosting settings,了解如何设置所需的环境。最简单的方法是指定ASPNETCORE_ENVIRONMENT
env变量。
关于 交换到开发环境将显示有关发生的错误的更多详细信息。
这是关于WebHostDefaults.DetailedErrorsKey
settings:
启用时(或环境设置为开发时),应用程序会捕获详细的例外情况。
您可以通过以下方式明确启用它:
WebHost.CreateDefaultBuilder(args)
.UseSetting(WebHostDefaults.DetailedErrorsKey, "true")
在IIS上部署的故障排除应用程序有一个good doc sectio n。其中考虑在web.config中启用ASP.NET Core Module stdout logs:
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout">
另外,对于详细的例外情况,您可以启用Developer exception page。请注意,良好做法(出于安全原因)仅为Development
env设置此页面:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
最后一个(通常看起来不是你的情况),你也可以通过captureStartupErrors setting抓住启动错误:
WebHost.CreateDefaultBuilder(args)
.CaptureStartupErrors(true)