1. 程式人生 > >【WebAPI No.2】如何WebAPI釋出

【WebAPI No.2】如何WebAPI釋出

介紹:

Asp.Net Core在Windows上可以採用兩種執行方式。一種是自託管執行,另一種是釋出到IIS託管執行。

自託管

首先有一個完好的.Net Core WebAPI測試專案,然後進入根目錄執行   dotnet publish  ,來進行編譯:

然後在進入dll目錄,也就是程式集目錄:運行當前專案的主程式dll: dotnet  xxx.dll

出現上面情況就是完成了,釋出在了5000埠;

驗證看一下:

 修改預設埠:

.NET Core WebAP預設的埠號是5000,但是我們可以通過配置來修改埠號。

第一步:建立hosting.json檔案:

{
  
"server.urls": "http://*:8001;http://*:8002;http://*:8003" }

第二部讀取,並註冊:

     public static void Main(string[] args)
        {
            //BuildWebHost(args).Run();
            var config = new ConfigurationBuilder()
               .SetBasePath(Directory.GetCurrentDirectory())
               .AddJsonFile(
"hosting.json", optional: true) .Build(); var host = new WebHostBuilder() .UseKestrel() .UseConfiguration(config) .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup
<Startup>() .UseApplicationInsights() .Build(); host.Run(); }
View Code

還有一個就是如果出現一些與:CoreApi.deps.json相關的錯誤,解決辦法:

找到這個檔案然後在裡面新增: <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
  </PropertyGroup>
</Project>

 注:如果只是修改一個埠不做多埠釋出只需要這樣即可:

  public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
             .UseUrls("http://localhost:8002")
             .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .UseApplicationInsights()
            .Build();

 還有一種可以多次執行命令列來實現不同的埠:

首先Program.cs:

  public static IWebHost BuildWebHost(string[] args)
        {

            var config = new ConfigurationBuilder().AddCommandLine(args)
                .Build();
            string ip = config["ip"];
            string port= config["port"];
            return WebHost.CreateDefaultBuilder(args)
             .UseUrls($"http://{ip}:{port}")
             .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .UseApplicationInsights()
            .Build();

        }
View Code

然後在命令列輸入:

     dotnet CoreApi.dll  --ip 127.0.0.1 --port 8001

 傳送門