IBM® Bluemix 上运行ASP.NET Core
IBM? Bluemix? 上的“ASP.NET 核心”運行時采用“ASP.NET 核心”buildpack 技術。“ASP.NET 核心”是用于構建 .NET Web 應用程序的模塊化開放式源代碼框架。“.Net 核心”是跨平臺的小型運行時,可由“ASP.NET 核心”應用程序實現。將它們相結合可實現基于云的先進 Web 應用程序。
檢測
如果應用程序中的任何位置存在一個或多個包含 project.json 文件和至少一個 .cs 文件的文件夾,或者應用程序是從 dotnet publish 命令的輸出目錄進行推送,那么將使用 Bluemix 的“ASP.NET 核心”buildpack。
入門模板應用程序
IBM? Bluemix? 提供了“ASP.NET 核心”入門模板應用程序。“ASP.NET 核心”入門模板應用程序是一個簡單的應用程序,它提供了一個可供您使用的模板。您可以體驗該入門模板應用程序,對其進行更改并將更改推送到 Bluemix 環境。有關使用入門模板應用程序的幫助,請參閱使用入門模板應用程序。
運行時版本
指定 .NET CLI 版本
使用應用程序根目錄中的可選 global.json 來控制 .NET CLI 版本。例如:
? { ? ? ?"projects": [ "src" ], ? ? ?"sdk": { ? ? ? ?"version": "1.0.0-preview1-002702" ? ? ?} ? }
如果未指定,將使用穩定的最新候選發布版本。
定制 NuGet 數據包源
在應用程序根目錄中的 NuGet.Config 文件中控制應用程序依賴項的下載來源位置。例如:
? ? <configuration> ? <packageSources> ? ? ?<add key="NuGet.org" value="https://api.nuget.org/v3/index.json"/> ? </packageSources> ? </configuration>
在本地開發應用程序
有關在本地運行“ASP.NET 核心”應用程序的更多信息,請參閱 ASP.NET 入門。要盡量匹配應用程序在 Bluemix 中的運行方式,請遵循 Linux 中有關“.NET 核心”的指示信息,但無需在 Linux 上開發應用程序。
使用 Yeoman 工具可生成新的項目模板,如 Building Projects with Yeoman 中所述。
推送發布的應用程序
如果想要在應用程序中包含其需要的所有二進制文件,以使 buildpack 無需下載任何外部二進制文件,您可以推送發布的自包含應用程序。請參閱 Types of portability in .Net Core,以獲取有關自包含應用程序的更多信息。
要發布應用程序,請發出類似如下命令:
dotnet publish -r ubuntu.14.04-x64
然后即可從
?bin/<Debug|Release>/<framework>/<runtime>/publish
目錄推送應用程序。
另請注意,如果在應用程序中使用 manifest.yml 文件,您可以在 manifest.ymle 中指定發布輸出文件夾的路徑。之后在推送應用程序時,您無需位于該文件夾中。
部署包含多個項目的應用程序
要部署包含多個項目的應用程序,您需要指定希望 buildpack 將哪個項目作為主要項目運行。在解決方案的根文件夾中創建 .deployment 文件來設置主要項目的路徑即可完成此操作。您可以將主要項目的路徑指定為項目文件夾或項目文件(.xproj 或 .csproj)。
例如,如果解決方案的 src 文件夾中包含 MyApp.DAL、MyApp.Services 和 MyApp.Web 這三個項目,其中 MyApp.Web 是主要項目,那么 .deployment 文件的格式應如下所示:
? [config] ?project = src/MyApp.Web
在此示例中,如果在 project.json 文件中將 MyApp.DAL 和 MyApp.Services 項目列為 MyApp.Web 的依賴項,那么 buildpack 會自動編譯這兩個項目,但 buildpack 只會嘗試使用 dotnet run -p src/MyApp.Web 執行主要項目 MyApp.Web。假定 MyApp.Web 為 xproj 項目,那么此項目的路徑還可指定為
project = src/MyApp.Web/MyApp.Web.xproj
使用 cli 樣本存儲庫中的樣本以及 Visual Studio 模板
buildpack 將使用 dotnet run 命令運行您的應用程序,并傳遞以下內容之后的命令行自變量
--server.urls http://0.0.0.0:${PORT}
應用程序需要將此自變量傳遞到 kestrel,以確保 kestrel 偵聽正確的端口。
要實現此自變量的傳遞,需要對 cli 樣本存儲庫中提供的樣本以及 Visual Studio 提供的模板稍作修改,然后再部署到 Bluemix。
您需要根據以下示例中的注釋對 Main 方法進行修改:
public static void Main(string[] args) ?{
?var config = new ConfigurationBuilder() //ADD THESE 3 LINES AT THE TOP OF THE MAIN METHOD ? ? ? ?.AddCommandLine(args) ? ? ? ?.Build(); ? ?var host = new WebHostBuilder() ? ? ? ?.UseKestrel() ? ? ? ?.UseConfiguration(config) //ADD THIS LINE BEFORE 'UseStartup' ? ? ? ?.UseStartup<Startup>() ? ? ? ? ?.Build(); ? ?host.Run(); }
將以下依賴項添加到 project.json 中:
"Microsoft.Extensions.Configuration.CommandLine": "1.0.0-rc2-final",
將 using 語句添加到包含 Main 方法的文件中:
using Microsoft.Extensions.Configuration;
原文地址:https://new-console.ng.bluemix.net/docs/runtimes/dotnet/index.html
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的IBM® Bluemix 上运行ASP.NET Core的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在 ASP.NET MVC 中集成
- 下一篇: 走进异步编程的世界 - 开始接触 asy