簡體   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