共用方式為


基本 API 應用程式中的中介軟體

注意

這不是這篇文章的最新版本。 如需目前的版本,請參閱 本文的 .NET 9 版本。

警告

不再支援此版本的 ASP.NET Core。 如需詳細資訊,請參閱 .NET 和 .NET Core 支持原則。 如需目前的版本,請參閱 本文的 .NET 9 版本。

重要

這些發行前產品的相關資訊在產品正式發行前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。

如需目前的版本,請參閱 本文的 .NET 9 版本。

WebApplication 會根據特定條件,在 Minimal API applications 中自動新增下列中介軟體:

下列程式碼實際上是將自動中介軟體新增至應用程式所產生的內容:

if (isDevelopment)
{
    app.UseDeveloperExceptionPage();
}

app.UseRouting();

if (isAuthenticationConfigured)
{
    app.UseAuthentication();
}

if (isAuthorizationConfigured)
{
    app.UseAuthorization();
}

// user middleware/endpoints
app.CustomMiddleware(...);
app.MapGet("/", () => "hello world");
// end user middleware/endpoints

app.UseEndpoints(e => {});

在某些情況下,應用程式的預設中介軟體設定不正確,而且需要修改。 例如,應該在 UseAuthenticationUseAuthorization 之前呼叫 UseCors。 如果呼叫 UseCors,則應用程式需要呼叫 UseAuthenticationUseAuthorization

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

如果中介軟體應在路由比對發生之前執行,則應該呼叫 UseRouting,而且中介軟體應該放在對 UseRouting 的呼叫之前。 UseEndpoints 在此案例中並非必要項目,因為它會如先前所述自動新增:

app.Use((context, next) =>
{
    return next(context);
});

app.UseRouting();

// other middleware and endpoints

新增終端中介軟體時:

  • 中介軟體必須在 UseEndpoints 之後新增。
  • 應用程式必須呼叫 UseRoutingUseEndpoints,讓終端中介軟體可以放在正確的位置。
app.UseRouting();

app.MapGet("/", () => "hello world");

app.UseEndpoints(e => {});

app.Run(context =>
{
    context.Response.StatusCode = 404;
    return Task.CompletedTask;
});

終端中介軟體是會在沒有可處理要求的端點時執行的中介軟體。

WebApplication 會根據特定條件,在 Minimal API applications 中自動新增下列中介軟體:

下列程式碼實際上是將自動中介軟體新增至應用程式所產生的內容:

if (isDevelopment)
{
    app.UseDeveloperExceptionPage();
}

app.UseRouting();

if (isAuthenticationConfigured)
{
    app.UseAuthentication();
}

if (isAuthorizationConfigured)
{
    app.UseAuthorization();
}

// user middleware/endpoints
app.CustomMiddleware(...);
app.MapGet("/", () => "hello world");
// end user middleware/endpoints

app.UseEndpoints(e => {});

在某些情況下,應用程式的預設中介軟體設定不正確,而且需要修改。 例如,應該在 UseAuthenticationUseAuthorization 之前呼叫 UseCors。 如果呼叫 UseCors,則應用程式需要呼叫 UseAuthenticationUseAuthorization

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

如果中介軟體應在路由比對發生之前執行,則應該呼叫 UseRouting,而且中介軟體應該放在對 UseRouting 的呼叫之前。 UseEndpoints 在此案例中並非必要項目,因為它會如先前所述自動新增:

app.Use((context, next) =>
{
    return next(context);
});

app.UseRouting();

// other middleware and endpoints

新增終端中介軟體時:

  • 中介軟體必須在 UseEndpoints 之後新增。
  • 應用程式必須呼叫 UseRoutingUseEndpoints,讓終端中介軟體可以放在正確的位置。
app.UseRouting();

app.MapGet("/", () => "hello world");

app.UseEndpoints(e => {});

app.Run(context =>
{
    context.Response.StatusCode = 404;
    return Task.CompletedTask;
});

終端中介軟體是會在沒有可處理要求的端點時執行的中介軟體。

如需最小 API 中的防偽中介軟體的資訊,請參閱防止 ASP.NET Core 中的跨網站偽造要求 (XSRF/CSRF) 攻擊

如需中介軟體的詳細資訊,請參閱 ASP.NET Core 中介軟體,以及可新增至應用程式的內建中介軟體清單

如需最低限度 API 的詳細資訊,請參閱 Minimal APIs overview