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

时间:2018-03-13 11:40:32

标签: c# azure asp.net-core asp.net-core-webapi

我有一个.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等按预期方式。我猜这都是由于我没有做过的一些配置引起的,但我不确定到底是什么。

3 个答案:

答案 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();

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