在ASP.NET MVC Core 2.0中向BuildWebHost()添加可選方法的正確方法是什麼?ASP.NET MVC Core 2.0 - 刪除用於部署到Azure網站的UserKestrel()?
我需要在我的開發環境中添加UseKestrel()以在本地啓用HTTPS,但是由於Azure網站不喜歡它,因此我需要刪除它。
背景:
我將ASP.NET MVC Core 1.1應用程序遷移到2.0。特別是,我也跟着關於Program.cs的變化在這裏列出的步驟:
https://docs.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/#update-main-method-in-programcs
該文件概述了構建虛擬主機......基於這樣所需的新格局,這裏是新的2.0版的我BuildWebHost()方法,在發展工程:
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseIISIntegration()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.UseKestrel(options =>
{
options.Listen(IPAddress.Loopback, 5001, listenOptions =>
{
listenOptions.UseHttps("mycert.pfx", "password");
});
})
.Build();
部署到Azure中後,我得到了502.5的錯誤,並期待在捻事件日誌,我發現這一點:
Application 'MACHINE/WEBROOT/APPHOST/BEASTMUFFIN' with physical root 'D:\home\site\wwwroot\' failed to start process with commandline 'dotnet .\BeastMuffin.Web.dll', ErrorCode = '0x80004005 : e0434352.
搜索並閱讀有關該特定錯誤代碼,我意識到這可能與我的Program.cs有關,並且已經關注了UseKestrel()方法調用。
我注意到了該行,並重新發布,它的工作完美。
因此,回到原來的問題......我如何遵循構建虛擬主機的新模式,但在本地運行時,包含UseKestrel()方法及其選項?
雙倍的好答案。 :)首先,感謝#if DEBUG提示。我聽說肖恩做了一件了不起的工作。我只是不願意看到別人的內容,因爲害怕剽竊指責。另外,我沒有意識到你可以在這樣的方法調用鏈中使用它!第二,謝謝你的個人筆記。我很高興成爲這麼多人的學習體驗的一小部分。祝你好! –
其實,我先嚐試了後一種解決方案,因爲它感覺正確......但是,IHostingEnvironment會傳遞給它嗎?在我的情況下,當我嘗試運行這個命令時,我收到一條錯誤消息:「程序不包含適用於入口點的靜態'Main'方法」 –
另外,還有一件事情是......從實驗中,名稱該方法必須是:BuildWebHost()...否則EF Core 2工具將不起作用。在我看來,這在文檔中沒有被充分強調。 –