主頁 > .NET開發 > ASP.NET Core 5.0 的新增功能

ASP.NET Core 5.0 的新增功能

2020-11-11 15:45:46 .NET開發

本文重點介紹 ASP.NET Core 5.0 中最重要的更改,并提供相關檔案的鏈接,

ASP.NET Core MVC 和 :::no-loc(Razor)::: 改進

通過模型系結將日期/時間系結到 UTC

模型系結現在支持將 UTC 時間字串系結到 DateTime, 如果請求包含 UTC 時間字串,則模型系結會將其系結到 UTC DateTime, 例如,以下時間字串會系結到 UTC DateTimehttps://example.com/mycontroller/myaction?time=2019-06-14T02%3A30%3A04.0576719Z

模型系結和驗證與 C# 9 記錄型別一起使用

C# 9 記錄型別可以與 MVC 控制器或 :::no-loc(Razor)::: 頁面中的模型系結一起使用, 記錄型別是為通過網路傳輸的資料建模的好方法,

例如,以下 PersonController 將 Person 記錄型別與模型系結和表單驗證一起使用:

C#
public record Person([Required] string Name, [Range(0, 150)] int Age);

public class PersonController
{
   public IActionResult Index() => View();

   [HttpPost]
   public IActionResult Index(Person person)
   {
          // ...
   }
}

Person/Index.cshtml 檔案:

CSHTML
@model Person

Name: <input asp-for="Model.Name" />
<span asp-validation-for="Model.Name" />

Age: <input asp-for="Model.Age" />
<span asp-validation-for="Model.Age" />

對 DynamicRouteValueTransformer 的改進

ASP.NET Core 3.1 引入了 DynamicRouteValueTransformer,作為使用自定義終結點動態選擇 MVC 控制器操作或 :::no-loc(Razor)::: 頁面的方法, ASP.NET Core 5.0 應用可以將狀態傳遞到 DynamicRouteValueTransformer 并篩選選定的終結點集,

雜項

  • [Compare] 特性可應用于 :::no-loc(Razor)::: 頁面模型上的屬性,
  • 默認情況下,從正文中系結的引數和屬性被視為必需,

Web API

OpenAPI 規范默認開啟

OpenAPI 規范是一種行業標準,用于描述 HTTP API 并將其集成到復雜的業務流程中或與第三方集成, OpenAPI 受到所有云提供程式和許多 API 注冊表的廣泛支持, 從 Web API 發出 OpenAPI 檔案的應用具有各種可使用這些 API 的新機會, 與開放源代碼專案 Swashbuckle.AspNetCore 的維護人員合作,ASP.NET Core API 模板包含對 Swashbuckle 的 NuGet 依賴關系, Swashbuckle 是一個常用的開放源代碼 NuGet 包,可動態發出 OpenAPI 檔案, Swashbuckle 通過 API 控制器進行自檢并在運行時或在生成時使用 Swashbuckle CLI 生成 OpenAPI 檔案來實作此目的,

在 ASP.NET Core 5.0 中,Web API 模板默認啟用 OpenAPI 支持, 若要禁用 OpenAPI,請執行以下操作:

  • 通過命令列:

    .NET Core CLI
    dotnet new webapi --no-openapi true
    
  • 通過 Visual Studio:取消選中“啟用 OpenAPI 支持”,

為 Web API 專案創建的所有 .csproj 檔案都包含 Swashbuckle.AspNetCore NuGet 包參考,

XML
<ItemGroup>
    <PackageReference Include="Swashbuckle.AspNetCore" Version="5.5.1" />
</ItemGroup>

模板生成的代碼在 Startup.ConfigureServices 中包含用于激活 OpenAPI 檔案生成的代碼:

C#
public void ConfigureServices(IServiceCollection services)
{

    services.AddControllers();
    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebApp1", Version = "v1" });
    });
}

Startup.Configure 方法將添加 Swashbuckle 中間件,這將啟用:

  • 檔案生成程序,
  • 在開發模式下默認為 Swagger UI 頁,

在發布到生產環境時,模板生成的代碼不會意外公開 API 的說明,

C#
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseSwagger();
        app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json",
                         "WebApp1 v1"));
    }

    app.UseHttpsRedirection();

    app.UseRouting();

    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

Azure API 管理匯入

ASP.NET Core API 專案啟用 OpenAPI 時,Visual Studio 2019 版本 16.8 及更高版本將在發布流程中自動提供額外的步驟, 使用 Azure API 管理的開發人員有機會在發布流程中自動將 API 匯入到 Azure API 管理:

Azure API 管理匯入與發布

更佳的 Web API 專案啟動體驗

如果默認啟用了 OpenAPI,則顯著改進了 Web API 開發人員的應用啟動體驗 (F5), 借助 ASP.NET Core 5.0,Web API 模板會預先配置為加載 Swagger UI 頁, Swagger UI 頁提供為已發布的 API 添加的檔案,并且單擊一次即可測驗 API,

swagger/index.html 視圖

:::no-loc(Blazor):::

性能改進

對于 .NET 5,通過特別著重于復雜的 UI 呈現和 JSON 序列化顯著改進了 :::no-loc(Blazor WebAssembly)::: 運行時性能, 在我們的性能測驗中,.NET 5 中 :::no-loc(Blazor WebAssembly)::: 的速度要比大多數情況快兩到三倍, 有關詳細資訊,請參閱 ASP.NET 博客:.NET 5 候選發布版本 1 中的 ASP.NET Core 更新,

CSS 隔離

:::no-loc(Blazor)::: 現在支持定義限定為給定組件的 CSS 樣式, 使用組件特定的 CSS 樣式,可以更輕松地了解應用中的樣式,并避免全域樣式的意外副作用, 有關詳細資訊,請參閱 ASP.NET Core Blazor CSS 隔離,

新的 InputFile 組件

InputFile 組件允許讀取用戶選擇要上傳的一個或多個檔案, 有關詳細資訊,請參閱 ASP.NET Core :::no-loc(Blazor)::: 檔案上傳,

新的 InputRadio 和 InputRadioGroup 組件

:::no-loc(Blazor)::: 具有內置的 InputRadio 和 InputRadioGroup 組件,這些組件可簡化通過集成驗證將資料系結到單選按鈕組, 有關詳細資訊,請參閱 ASP.NET Core Blazor 表單和驗證,

組件虛擬化

使用 :::no-loc(Blazor)::: 框架的內置虛擬化支持提高組件呈現的感知性能, 有關詳細資訊,請參閱 ASP.NET Core Blazor 表單和驗證,

ontoggle 事件支持

:::no-loc(Blazor)::: 事件現在支持 ontoggle DOM 事件, 有關詳細資訊,請參閱 ASP.NET Core Blazor 事件處理,

將 UI 焦點設定在 :::no-loc(Blazor)::: 應用中

對元素參考使用 FocusAsync 便捷方法,以便將 UI 焦點設定到該元素, 有關詳細資訊,請參閱 ASP.NET Core Blazor 事件處理,

自定義驗證類屬性

與 CSS 框架集成時,自定義驗證類名稱非常有用,例如啟動, 有關詳細資訊,請參閱 ASP.NET Core Blazor 表單和驗證,

IAsyncDisposable 支持

:::no-loc(Blazor)::: 組件現在支持已分配資源的異步版本的 IAsyncDisposable 介面,

JavaScript 隔離和物件參考

:::no-loc(Blazor)::: 在標準 JavaScript 模塊中啟用 JavaScript 隔離, 有關詳細資訊,請參閱 在 ASP.NET Core :::no-loc(Blazor)::: 中從 .NET 方法呼叫 JavaScript 函式,

表單組件支持顯示名稱

以下內置組件支持帶有 DisplayName 引數的顯示名稱:

  • InputDate
  • InputNumber
  • InputSelect

有關詳細資訊,請參閱 ASP.NET Core Blazor 表單和驗證,

catch-all 路由引數

組件支持可跨多個檔案夾邊界捕獲路徑的 catch-all 路由引數, 有關詳細資訊,請參閱 ASP.NET Core Blazor 路由,

除錯改進

除錯 :::no-loc(Blazor WebAssembly)::: 應用在 ASP.NET Core 5.0 中得到了改進, 此外,Visual Studio for Mac 上現在也支持除錯, 有關詳細資訊,請參閱 除錯 ASP.NET Core Blazor WebAssembly,

Microsoft :::no-loc(Identity)::: v2.0 和 MSAL v2.0

:::no-loc(Blazor)::: 安全性現在使用 Microsoft :::no-loc(Identity)::: v2.0(Microsoft.:::no-loc(Identity):::.Web 和 Microsoft.:::no-loc(Identity):::.Web.UI)和 MSAL v2.0, 有關詳細資訊,請參閱:::no-loc(Blazor)::: 安全性和 :::no-loc(Identity)::: 節點中的主題,

:::no-loc(Blazor Server)::: 受保護的瀏覽器存盤

:::no-loc(Blazor Server)::: 應用現在可以使用內置支持在瀏覽器中存盤應用狀態,這已受到保護,無法使用 ASP.NET Core 資料保護進行篡改, 資料可以存盤在本地瀏覽器存盤或會話存盤中, 有關詳細資訊,請參閱 ASP.NET Core Blazor 狀態管理,

:::no-loc(Blazor WebAssembly)::: 預呈現

跨托管模型改進了組件集成,:::no-loc(Blazor WebAssembly)::: 應用現在可以在服務器上預呈現輸出,

剪裁/鏈接改進

:::no-loc(Blazor WebAssembly)::: 在生成期間執行中間語言 (IL) 剪裁/鏈接,以從應用的輸出程式集中剪裁不必要的 IL, 隨著 ASP.NET Core 5.0 的發布,:::no-loc(Blazor WebAssembly)::: 通過其他配置選項來執行改進的剪裁, 有關詳細資訊,請參閱 配置適用于 ASP.NET Core Blazor 的裁邊器 和剪裁選項,

瀏覽器兼容性分析器

:::no-loc(Blazor WebAssembly)::: 應用面向整個 .NET API 外圍應用,但由于瀏覽器沙盒約束,并非所有 .NET API 在 WebAssembly 上都受支持, 在 WebAssembly 上運行時,不支持的 API 將引發 PlatformNotSupportedException, 當應用使用應用目標平臺不支持的 API 時,平臺兼容性分析器會向開發人員發出警告, 有關詳細資訊,請參閱 ASP.NET Core Razor 組件類別庫,

延遲加載程式集

通過推遲某些應用程式程式集的加載,直到需要時才加載,來提高 :::no-loc(Blazor WebAssembly)::: 應用啟動性能, 有關詳細資訊,請參閱 在 ASP.NET Core Blazor WebAssembly 中延遲加載程式集,

已更新的全球化支持

全球化支持適用于基于 International Components for Unicode (ICU) 的 :::no-loc(Blazor WebAssembly):::, 有關詳細資訊,請參閱 ASP.NET Core Blazor 全球化和本地化,

gRPC

在 gRPC 中進行了許多性能改進, 有關詳細資訊,請參閱 .NET 5 中的 gRPC 性能改進,

有關 gRPC 的詳細資訊,請參閱 .NET Core 上的 gRPC 的簡介,

:::no-loc(SignalR):::

:::no-loc(SignalR)::: 中心篩選器(在 ASP.NET :::no-loc(SignalR)::: 中稱為“中心管道”)是一項功能,它允許代碼在呼叫中心方法之前和之后運行, 在呼叫中心方法之前和之后運行代碼類似于中間件在 HTTP 請求之前和之后運行代碼, 常見用途包括日志記錄、錯誤處理和引數驗證,

有關詳細資訊,請參閱在 ASP.NET Core :::no-loc(SignalR)::: 中使用中心篩選器,

:::no-loc(SignalR)::: 并行中心呼叫

ASP.NET Core :::no-loc(SignalR)::: 現在能夠處理并行中心呼叫, 可以更改默認行為,以允許客戶端一次呼叫多個中心方法:

 警告

你要查找的示例似乎已移動! 不要擔心,我們正在努力解決此問題,

在 :::no-loc(SignalR)::: Java 客戶端中添加了 Messagepack 支持

新包 (com.microsoft.signalr.messagepack) 將 MessagePack 支持添加到 :::no-loc(SignalR)::: Java 客戶端, 若要使用 MessagePack 中心協議,請將 .withHubProtocol(new MessagePackHubProtocol()) 添加到連接生成器:

Java
HubConnection hubConnection = HubConnectionBuilder.create(
                           "http://localhost:53353/MyHub")
               .withHubProtocol(new MessagePackHubProtocol())
               .build();

:::no-loc(Kestrel):::

  • 通過配置可多載的終結點::::no-loc(Kestrel)::: 可以檢測對傳遞到 :::no-loc(Kestrel):::ServerOptions.Configure 的配置所做的更改,從現有終結點取消系結并系結到新終結點,而無需在 reloadOnChange 引數 true 時重新啟動應用程式, 默認情況下,在使用 ConfigureWebHostDefaults 或 CreateDefaultBuilder 時,:::no-loc(Kestrel)::: 將系結到啟用了 reloadOnChange 的“:::no-loc(Kestrel):::”配置子節, 手動呼叫 :::no-loc(Kestrel):::ServerOptions.Configure 以獲取可多載終結點時,應用必須傳遞 reloadOnChange: true

  • HTTP/2 回應標頭改進, 有關詳細資訊,請參閱下一部分中的性能改進,

  • 支持套接字傳輸中的其他終結點型別:添加到 System.Net.Sockets 中引入的新 API,:::no-loc(Kestrel)::: 中的套接字默認傳輸允許系結到現有檔案句柄和 Unix 域套接字, 如果支持系結到現有檔案句柄,則無需 libuv 傳輸即可使用現有 Systemd 集成,

  • :::no-loc(Kestrel)::: 中的自定義標頭解碼:應用可以指定使用哪個 Encoding 來基于標頭名稱解釋傳入標頭,而不是默認為 UTF-8, 在包含身份驗證方案、帳戶名和身份驗證簽名的字串中設定 Microsoft.AspNetCore.Server.:::no-loc(Kestrel):::.:::no-loc(Kestrel):::ServerOptions.RequestHeaderEncodingSelector 屬性用于指定要使用的編碼:

    C#
    public static IHostBuilder CreateHostBuilder(string[] args) =>
      Host.CreateDefaultBuilder(args)
          .ConfigureWebHostDefaults(webBuilder =>
          {
              webBuilder.Configure:::no-loc(Kestrel):::(options =>
              {
                  options.RequestHeaderEncodingSelector = encoding =>
                  {
                        return encoding switch
                        {
                            "Host" => System.Text.Encoding.Latin1,
                            _ => System.Text.Encoding.UTF8,
                        };
                  };
              });
              webBuilder.UseStartup<Startup>();
          });
    

通過配置的 :::no-loc(Kestrel)::: 終結點特定選項

添加了通過配置來配置 :::no-loc(Kestrel)::: 的終結點特定選項的支持, 終結點特定的配置包括:

  • 已使用 HTTP 協議
  • 已使用 TLS 協議
  • 已選擇證書
  • 客戶端證書模式

配置允許指定基于指定服務器名稱選擇的證書, 服務器名稱是客戶端所指示的 TLS 協議的服務器名稱指示 (SNI) 擴展的一部分, :::no-loc(Kestrel)::: 的配置還支持在主機名中使用通配符前綴,

下面的示例演示如何使用組態檔指定終結點特定的配置:

JSON
{
  ":::no-loc(Kestrel):::": {
    "Endpoints": {
      "EndpointName": {
        "Url": "https://*",
        "Sni": {
          "a.example.org": {
            "Protocols": "Http1AndHttp2",
            "SslProtocols": [ "Tls11", "Tls12"],
            "Certificate": {
              "Path": "testCert.pfx",
              "Password": "testPassword"
            },
            "ClientCertificateMode" : "NoCertificate"
          },
          "*.example.org": {
            "Certificate": {
              "Path": "testCert2.pfx",
              "Password": "testPassword"
            }
          },
          "*": {
            // At least one sub-property needs to exist per
            // SNI section or it cannot be discovered via
            // IConfiguration
            "Protocols": "Http1",
          }
        }
      }
    }
  }
}

服務器名稱指示 (SNI) 是一種 TLS 擴展,可將虛擬域作為 SSL 協商的一部分包括在內, 這實際上表示虛擬域名或主機名可用于標識網路終結點,

性能改進

HTTP/2

  • 顯著減少了 HTTP/2 代碼路徑中的分配,

  • 支持 :::no-loc(Kestrel)::: 中的 HTTP/2 回應標頭的 HPack 動態壓縮, 有關詳細資訊,請參閱標頭表大小和 HPACK:HTTP/2 的靜默殺手锏,

  • 發送 HTTP/2 PING 幀:HTTP/2 有一種機制,用于發送 PING 幀以確保空閑連接仍然正常作業, 當使用經常空閑但僅可間歇查看活動的長生存期流(例如,gRPC 流)時,確保可行連接特別有用, 應用可以通過對 <xref:Microsoft.AspNetCore.Server.:::no-loc(Kestrel):::.:::no-loc(Kestrel):::ServerOptions> 設定限制,在 :::no-loc(Kestrel)::: 中發送定期 PING 幀:

    C#
    public static IHostBuilder CreateHostBuilder(string[] args) =>
      Host.CreateDefaultBuilder(args)
          .ConfigureWebHostDefaults(webBuilder =>
          {
              webBuilder.Configure:::no-loc(Kestrel):::(options =>
              {
                  options.Limits.Http2.KeepAlivePingInterval =
                                                 TimeSpan.FromSeconds(10);
                  options.Limits.Http2.KeepAlivePingTimeout =
                                                 TimeSpan.FromSeconds(1);
              });
              webBuilder.UseStartup<Startup>();
          });
    

容器

在 .NET 5.0 之前,生成并發布用于 ASP.NET Core 應用的 Dockerfile 需要提取整個 .NET Core SDK 和 ASP.NET Core 映像, 在此版本中,將減少提取 SDK 影像位元組數,并大大消除為 ASP.NET Core 映像提取的位元組數, 有關詳細資訊,請參閱此 GitHub 問題注釋,

身份驗證和授權

使用 Microsoft.:::no-loc(Identity):::.Web 的 Azure Active Directory 身份驗證

ASP.NET Core 專案模板現在與 <xref:Microsoft.:::no-loc(Identity):::.Web?displayProperty=fullName> 集成,以處理使用 Azure Activity Directory (Azure AD) 的身份驗證, Microsoft.:::no-loc(Identity):::.Web package 提供:

  • 通過 Azure AD 進行身份驗證的更好體驗,
  • 代表用戶訪問 Azure 資源的一種更簡單方法,包括 Microsoft Graph, 請參閱 Microsoft.:::no-loc(Identity):::.Web sample,它從基本登錄開始,通過多租戶(使用 Azure API、使用 Microsoft Graph 并保護你自己的 API)前進, Microsoft.:::no-loc(Identity):::.Web 與 .NET 5 一起提供,

允許匿名訪問終結點

AllowAnonymous 擴展方法允許匿名訪問終結點:

C#
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseRouting();

    app.UseAuthentication();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapGet("/", async context =>
        {
            await context.Response.WriteAsync("Hello World!");
        })
        .AllowAnonymous();
    });
}

自定義處理授權失敗

現在,使用由授權中間件呼叫的新 IAuthorizationMiddlewareResultHandler 介面可以更輕松地自定義處理授權失敗, 默認實作保持不變,但可以在“依賴關系注入”中注冊自定義處理程式,這允許基于授權失敗的原因發出自定義 HTTP 回應, 請參閱用于演示 IAuthorizationMiddlewareResultHandler 的使用情況的此示例,

使用終結點路由時的授權

使用終結點路由時的授權現在會接收 HttpContext 而不是終結點實體, 這允許授權中間件訪問 RouteData 以及無法通過 Endpoint 類訪問的 HttpContext 的其他屬性, 可以使用 context.GetEndpoint 從背景關系中提取終結點,

使用 Linux 上的 Kerberos 身份驗證和 LDAP 的基于角色的訪問控制

請參閱 Kerberos 身份驗證和基于角色的訪問控制 (RBAC)

API 改進

用于 HttpRequest 和 HttpResponse 的 JSON 擴展方法

可以使用新的 ReadFromJsonAsync 和 WriteAsJsonAsync 擴展方法從 HttpRequest 和 HttpResponse 讀取和寫入 JSON 資料, 這些擴展方法使用 System.Text.Json 序列化程式來處理 JSON 資料, 新的 HasJsonContentType 擴展方法還可以檢查請求是否具有 JSON 內容型別,

JSON 擴展方法可與終結點路由結合使用,以編程方式創建 JSON API,我們稱之為“路由到代碼”*_, 這是一個新選項,適用于想要以輕量級方式創建基本 JSON API 的開發人員, 例如,只有少量終結點的 Web 應用可能選擇使用路由到代碼,而不是 ASP.NET Core MVC 的全部功能:

C#
endpoints.MapGet("/weather/{city:alpha}", async context =>
{
    var city = (string)context.Request.RouteValues["city"];
    var weather = GetFromDatabase(city);

    await context.Response.WriteAsJsonAsync(weather);
});

有關新 JSON 擴展方法以及路由到代碼的詳細資訊,請參閱此 .NET show,

System.Diagnostics.Activity

System.Diagnostics.Activity 的默認格式現在默認為 W3C 格式, 默認情況下,這使得 ASP.NET Core 中的分布式跟蹤支持可與更多框架進行互操作,

FromBodyAttribute

FromBodyAttribute 現在支持配置允許將這些引數或屬性視為可選的選項:

C#
public IActionResult Post([FromBody(EmptyBodyBehavior = EmptyBodyBehavior.Allow)]
                           MyModel model) {
     ...
     }

其他改進

我們已開始將可以為 null 的注釋應用到 ASP.NET Core 程式集, 我們計劃為 .NET 5 Framework 的大多數常見公共 API 圖面添加批注,

控制 Startup 類激活

添加了額外的 UseStartup 多載,使應用能夠提供工廠方法來控制 Startup 類激活, 控制 Startup 類激活有助于將附加引數傳遞給與主機一起初始化的 Startup

C#
public class Program
{
    public static async Task Main(string[] args)
    {
        var logger = CreateLogger();
        var host = Host.CreateDefaultBuilder()
            .ConfigureWebHost(builder =>
            {
                builder.UseStartup(context => new Startup(logger));
            })
            .Build();

        await host.RunAsync();
    }
}

使用 dotnet watch 自動重繪

在 .NET 5 中,對 ASP.NET Core 專案運行 dotnet watch 將啟動默認瀏覽器,并在對代碼進行更改時自動重繪瀏覽器, 這意味著可以執行下列操作:

_ 在文本編輯器中打開 ASP.NET Core 專案,

  • 運行 dotnet watch
  • 專注于代碼更改,而工具處理應用的重新生成、重新啟動和重新加載,

我們希望將來能將自動重繪功能引入 Visual Studio,

控制臺記錄器格式化程式

已對 Microsoft.Extensions.Logging 庫中的控制臺日志提供程式進行了改進, 開發人員現在可以實作自定義 ConsoleFormatter,以對控制臺輸出的格式設定和著色進行完全控制, 格式化程式 API 通過實作 VT-100 轉義序列的子集進行豐富的格式設定, VT-100 受大多數新式終端支持, 控制臺記錄器可以對不受支持的終端分析轉義序列,使開發人員可以為所有終端創作單個格式化程式,

JSON 控制臺記錄器

除了對自定義格式化程式的支持外,我們還添加了一個內置 JSON 格式化程式,用于向控制臺發出結構化 JSON 日志, 下面的代碼演示如何從默認記錄器切換到 JSON:

C#
public static IHostBuilder CreateHostBuilder(string[] args) =>
           Host.CreateDefaultBuilder(args)
  .ConfigureLogging(logging =>
  {
     logging.AddJsonConsole(options =>
     {
         options.JsonWriterOptions = new JsonWriterOptions()
         { Indented = true };
     });
  })
  .ConfigureWebHostDefaults(webBuilder =>
  {
    webBuilder.UseStartup<Startup>();
  });

發出到控制臺的日志訊息為 JSON 格式:

JSON
{
  "EventId": 0,
  "LogLevel": "Information",
  "Category": "Microsoft.Hosting.Lifetime",
  "Message": "Now listening on: https://localhost:5001",
  "State": {
    "Message": "Now listening on: https://localhost:5001",
    "address": "https://localhost:5001",
    "{OriginalFormat}": "Now listening on: {address}"
  }
}

https://docs.microsoft.com/zh-cn/aspnet/core/release-notes/aspnetcore-5.0?view=aspnetcore-5.0

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/210717.html

標籤:.NET技术

上一篇:ASP.NET Core 5.0 Web API 自動集成Swashbuckle

下一篇:ASP.NET Core 5.0 Web API 自動集成Swashbuckle

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • WebAPI簡介

    Web體系結構: 有三個核心:資源(resource),URL(統一資源識別符號)和表示 他們的關系是這樣的:一個資源由一個URL進行標識,HTTP客戶端使用URL定位資源,表示是從資源回傳資料,媒體型別是資源回傳的資料格式。 接下來我們說下HTTP. HTTP協議的系統是一種無狀態的方式,使用請求/ ......

    uj5u.com 2020-09-09 22:07:47 more
  • asp.net core 3.1 入口:Program.cs中的Main函式

    本文分析Program.cs 中Main()函式中代碼的運行順序分析asp.net core程式的啟動,重點不是剖析原始碼,而是理清程式開始時執行的順序。到呼叫了哪些實體,哪些法方。asp.net core 3.1 的程式入口在專案Program.cs檔案里,如下。ususing System; us ......

    uj5u.com 2020-09-09 22:07:49 more
  • asp.net網站作為websocket服務端的應用該如何寫

    最近被websocket的一個問題困擾了很久,有一個需求是在web網站中搭建websocket服務。客戶端通過網頁與服務器建立連接,然后服務器根據ip給客戶端網頁發送資訊。 其實,這個需求并不難,只是剛開始對websocket的內容不太了解。上網搜索了一下,有通過asp.net core 實作的、有 ......

    uj5u.com 2020-09-09 22:08:02 more
  • ASP.NET 開源匯入匯出庫Magicodes.IE Docker中使用

    Magicodes.IE在Docker中使用 更新歷史 2019.02.13 【Nuget】版本更新到2.0.2 【匯入】修復單列匯入的Bug,單元測驗“OneColumnImporter_Test”。問題見(https://github.com/dotnetcore/Magicodes.IE/is ......

    uj5u.com 2020-09-09 22:08:05 more
  • 在webform中使用ajax

    如果你用過Asp.net webform, 說明你也算是.NET 開發的老兵了。WEBform應該是2011 2013左右,當時還用visual studio 2005、 visual studio 2008。后來基本都用的是MVC。 如果是新開發的專案,估計沒人會用webform技術。但是有些舊版 ......

    uj5u.com 2020-09-09 22:08:50 more
  • iis添加asp.net網站,訪問提示:由于擴展配置問題而無法提供您請求的

    今天在iis服務器配置asp.net網站,遇到一個問題,記錄一下: 問題:由于擴展配置問題而無法提供您請求的頁面。如果該頁面是腳本,請添加處理程式。如果應下載檔案,請添加 MIME 映射。 WindowServer2012服務器,添加角色安裝完.netframework和iis之后,運行aspx頁面 ......

    uj5u.com 2020-09-09 22:10:00 more
  • WebAPI-處理架構

    帶著問題去思考,大家好! 問題1:HTTP請求和回傳相應的HTTP回應資訊之間發生了什么? 1:首先是最底層,托管層,位于WebAPI和底層HTTP堆疊之間 2:其次是 訊息處理程式管道層,這里比如日志和快取。OWIN的參考是將訊息處理程式管道的一些功能下移到堆疊下端的OWIN中間件了。 3:控制器處理 ......

    uj5u.com 2020-09-09 22:11:13 more
  • 微信門戶開發框架-使用指導說明書

    微信門戶應用管理系統,采用基于 MVC + Bootstrap + Ajax + Enterprise Library的技術路線,界面層采用Boostrap + Metronic組合的前端框架,資料訪問層支持Oracle、SQLServer、MySQL、PostgreSQL等資料庫。框架以MVC5,... ......

    uj5u.com 2020-09-09 22:15:18 more
  • WebAPI-HTTP編程模型

    帶著問題去思考,大家好!它是什么?它包含什么?它能干什么? 訊息 HTTP編程模型的核心就是訊息抽象,表示為:HttPRequestMessage,HttpResponseMessage.用于客戶端和服務端之間交換請求和回應訊息。 HttpMethod類包含了一組靜態屬性: private stat ......

    uj5u.com 2020-09-09 22:15:23 more
  • 部署WebApi隨筆

    一、跨域 NuGet參考Microsoft.AspNet.WebApi.Cors WebApiConfig.cs中配置: // Web API 配置和服務 config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 二、清除默認回傳XML格式 ......

    uj5u.com 2020-09-09 22:15:48 more
最新发布
  • C#多執行緒學習(二) 如何操縱一個執行緒

    <a href="https://www.cnblogs.com/x-zhi/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2943582/20220801082530.png" alt="" /></...

    uj5u.com 2023-04-19 09:17:20 more
  • C#多執行緒學習(二) 如何操縱一個執行緒

    C#多執行緒學習(二) 如何操縱一個執行緒 執行緒學習第一篇:C#多執行緒學習(一) 多執行緒的相關概念 下面我們就動手來創建一個執行緒,使用Thread類創建執行緒時,只需提供執行緒入口即可。(執行緒入口使程式知道該讓這個執行緒干什么事) 在C#中,執行緒入口是通過ThreadStart代理(delegate)來提供的 ......

    uj5u.com 2023-04-19 09:16:49 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    <a href="https://www.cnblogs.com/huangxincheng/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/214741/20200614104537.png" alt="" /&g...

    uj5u.com 2023-04-18 08:39:04 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    一:背景 1. 講故事 前段時間協助訓練營里的一位朋友分析了一個程式卡死的問題,回過頭來看這個案例比較經典,這篇稍微整理一下供后來者少踩坑吧。 二:WinDbg 分析 1. 為什么會卡死 因為是表單程式,理所當然就是看主執行緒此時正在做什么? 可以用 ~0s ; k 看一下便知。 0:000> k # ......

    uj5u.com 2023-04-18 08:33:10 more
  • SignalR, No Connection with that ID,IIS

    <a href="https://www.cnblogs.com/smartstar/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/u36196.jpg" alt="" /></a>...

    uj5u.com 2023-03-30 17:21:52 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:15:33 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:13:31 more
  • C#遍歷指定檔案夾中所有檔案的3種方法

    <a href="https://www.cnblogs.com/xbhp/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/957602/20230310105611.png" alt="" /></a&...

    uj5u.com 2023-03-27 14:46:55 more
  • C#/VB.NET:如何將PDF轉為PDF/A

    <a href="https://www.cnblogs.com/Carina-baby/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2859233/20220427162558.png" alt="" />...

    uj5u.com 2023-03-27 14:46:35 more
  • 武裝你的WEBAPI-OData聚合查詢

    <a href="https://www.cnblogs.com/podolski/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/616093/20140323000327.png" alt="" /><...

    uj5u.com 2023-03-27 14:46:16 more