我有一个.NET核心2.0 Web应用程序作为Azure应用程序服务成功运行。
为了省钱/复杂,我想在同一个域上运行其公共API,作为虚拟应用程序,即www.mysite.com/api
但是,当我发布到虚拟应用程序,然后尝试访问它时,我只是收到一条错误消息:
“由于发生内部服务器错误,无法显示页面。”
我是一位经验丰富的.NET框架开发人员,但这是我的第一个.NET核心项目,所以我有点不确定如何调试它。
为了确认,我有一个.NET核心网站和一个.NET核心Web API,其中Web API意味着存在于“/ api”虚拟应用程序中。我已将Azure应用服务中的虚拟应用程序设置为“site \ api”(主网站为“site \ wwwroot”)
API有自己的web.config等按预期方式。我猜这都是由于我没有做过的一些配置引起的,但我不确定到底是什么。
答案 0 :(得分:2)
问题是您的“子应用程序”生成了web.config
个文件,其中包含父项web.config
已有的重复条目:
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
请在此处查看此文:https://github.com/aspnet/IISIntegration/issues/190
答案 1 :(得分:0)
在你的Startup.cs中,你可能会有类似的东西:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
只需注释掉if
,您就会在“生产”中获得开发者异常页面。
这可能会给你一个关于真正问题的线索。
答案 2 :(得分:0)
除了@Neil所说的,启用启动错误,因为应用程序可能已经无法启动,这将导致根本不显示任何开发人员异常页面。
在program.cs中调整webhost构建过程
return WebHost.CreateDefaultBuilder(args)
.CaptureStartupErrors(true) // add this line
.UseSetting(WebHostDefaults.DetailedErrorsKey, "true") // and this line
.UseKestrel()
.UseStartup<Startup>()
.Build();