【问题标题】:.NET core web API as virtual application on Azure app service.NET 核心 Web API 作为 Azure 应用服务上的虚拟应用程序
【发布时间】:2018-08-21 15:41:36
【问题描述】:

我有一个 .NET core 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 等,正如预期的那样。我猜这都是由我没有完成的一些配置引起的,但我不确定到底是什么。

【问题讨论】:

  • 您是否启用了任何类型的日志记录?会显示实际抛出的异常的东西?
  • 不,我不知道——就像我说我是 .net 核心的新手!我知道如何在 .net 框架 web.config 中打开详细日志记录,但我猜它在 .net 核心站点中有所不同?
  • 您是否使用 IIS 作为反向代理?您能否提供您的 web.config、startup.cs 和 program.cs 的代码?您的 wwwroot 文件夹是否包含 index.html?
  • 您的 API 是否与您的网站在同一个项目中?您是否尝试过在 Azure 上不使用虚拟应用程序运行它?

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


【解决方案1】:

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

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

在此处查看这篇文章:https://github.com/aspnet/IISIntegration/issues/190

【讨论】:

  • 它通过删除另一个 web.config 来工作。非常感谢。
【解决方案2】:

除了@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

【讨论】:

  • 还是同样的错误信息...这里是网址:dev-vx-app.azurewebsites.net/api
  • 是的,这看起来不像是从 asp.net 应用程序返回的错误。
  • 如果您不运行您的应用程序并尝试访问该 url,会发生什么?您是否收到相同的错误消息?如果是这样,它与你的代码无关!
【解决方案3】:

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

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

只需将if注释掉,即可在“生产”中获得开发者异常页面。

这可能会让你知道真正的问题是什么。

【讨论】:

  • 我评论了 if out,但我没有看到不同的错误消息
猜你喜欢
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
  • 2017-05-12
  • 2019-05-14
  • 1970-01-01
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
相关资源
最近更新 更多