繁体   English   中英

.NET核心Web API作为Azure应用程序服务上的虚拟应用程序

[英].NET core web API as virtual application on Azure app service

我有一个.NET core 2.0 Web应用程序作为Azure应用程序服务成功运行。

为了省钱/复杂,我想在一个域上运行它的公共API,就像一个虚拟应用程序,即www.mysite.com/api

但是,当我释放到虚拟应用程序,然后尝试访问它时,我仅收到一条错误消息,内容为:

“由于发生内部服务器错误,因此无法显示该页面。”

我是一位经验丰富的.NET Framework开发人员,但这是我的第一个.NET核心项目,因此我不确定如何调试它。

只是为了确认一下,我有一个.NET核心网站和一个.NET核心Web API,其中Web API应驻留在“ / api”虚拟应用程序中。 我已将Azure应用程序服务中的虚拟应用程序设置为“ site \\ api”(主网站为“ site \\ wwwroot”)

该API具有预期的自己的web.config等。 我猜这都是由我尚未完成的某些配置引起的,但是我不确定到底是什么。

问题是您“子应用程序”生成了一个web.config文件,其中父web.config已经具有一个重复的条目:

<system.webServer>
<handlers>
  <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>

请参阅此处的文章: https : //github.com/aspnet/IISIntegration/issues/190

在您的Startup.cs中,您可能会有类似以下内容:

if (env.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
}

只需注释掉if ,您将在“生产”中获得开发人员例外页面。

这可能为您提供了真正问题所在的线索。

除了@Neil所说的以外,还要启用启动错误,因为应用程序可能已经无法启动,这将导致根本不显示开发人员异常页面。

在您的program.cs中调整Webhost的构建过程

        return WebHost.CreateDefaultBuilder(args)
            .CaptureStartupErrors(true) // add this line
            .UseSetting(WebHostDefaults.DetailedErrorsKey, "true") // and this line
            .UseKestrel()
            .UseStartup<Startup>()
            .Build();

参考: https : //docs.microsoft.com/zh-cn/aspnet/core/fundamentals/hosting?tabs=aspnetcore2x#capture-startup-errors

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM