Udostępnij za pośrednictwem


Oprogramowanie pośredniczące w minimalnych aplikacjach interfejsu API

Uwaga

Nie jest to najnowsza wersja tego artykułu. Aby zapoznać się z bieżącą wersją, zobacz wersję tego artykułu platformy .NET 9.

Ostrzeżenie

Ta wersja ASP.NET Core nie jest już obsługiwana. Aby uzyskać więcej informacji, zobacz zasady pomocy technicznej platformy .NET i platformy .NET Core. Aby zapoznać się z bieżącą wersją, zobacz wersję tego artykułu platformy .NET 9.

Ważne

Te informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany, zanim zostanie wydany komercyjnie. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.

Aby zapoznać się z bieżącą wersją, zobacz wersję tego artykułu platformy .NET 9.

WebApplication program automatycznie dodaje następujące oprogramowanie pośredniczące w Minimal API applications zależności od określonych warunków:

  • UseDeveloperExceptionPage element jest dodawany jako pierwszy, gdy parametr ma wartość HostingEnvironment "Development".
  • UseRouting Jest dodawany drugi, jeśli kod użytkownika nie został jeszcze wywołany UseRouting i jeśli istnieją skonfigurowane punkty końcowe, na przykład app.MapGet.
  • UseEndpoints Jest dodawany na końcu potoku oprogramowania pośredniczącego, jeśli są skonfigurowane jakiekolwiek punkty końcowe.
  • UseAuthentication jest dodawany natychmiast po UseRouting tym, jak kod użytkownika nie został jeszcze wywołany UseAuthentication i czy IAuthenticationSchemeProvider można go wykryć u dostawcy usług. IAuthenticationSchemeProvider program jest domyślnie dodawany podczas korzystania z usług AddAuthentication, a usługa jest wykrywana przy użyciu polecenia IServiceProviderIsService.
  • UseAuthorization Zostanie dodany dalej, jeśli kod użytkownika nie został jeszcze wywołany UseAuthorization i czy IAuthorizationHandlerProvider można go wykryć u dostawcy usług. IAuthorizationHandlerProvider program jest domyślnie dodawany podczas korzystania z usług AddAuthorization, a usługa jest wykrywana przy użyciu polecenia IServiceProviderIsService.
  • Oprogramowanie pośredniczące skonfigurowane przez użytkownika i punkty końcowe są dodawane między elementami UseRouting i UseEndpoints.

Poniższy kod jest w rzeczywistości tym, co tworzy automatyczne oprogramowanie pośredniczące dodawane do aplikacji:

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 => {});

W niektórych przypadkach domyślna konfiguracja oprogramowania pośredniczącego nie jest poprawna dla aplikacji i wymaga modyfikacji. Na przykład UseCors należy wywołać metodę przed UseAuthentication i UseAuthorization. Aplikacja musi wywołać metodę UseAuthentication , a UseAuthorization jeśli UseCors jest wywoływana:

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

Jeśli oprogramowanie pośredniczące powinno być uruchamiane przed rozpoczęciem dopasowywania tras, UseRouting należy wywołać metodę , a oprogramowanie pośredniczące powinno zostać umieszczone przed wywołaniem metody UseRouting. UseEndpoints nie jest wymagany w tym przypadku, ponieważ jest automatycznie dodawany zgodnie z wcześniejszym opisem:

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

app.UseRouting();

// other middleware and endpoints

Podczas dodawania oprogramowania pośredniczącego terminalu:

  • Oprogramowanie pośredniczące musi zostać dodane po .UseEndpoints
  • Aplikacja musi wywołać metodę UseRouting i UseEndpoints tak, aby oprogramowanie pośredniczące terminalu można było umieścić w odpowiedniej lokalizacji.
app.UseRouting();

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

app.UseEndpoints(e => {});

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

Oprogramowanie pośredniczące terminala to oprogramowanie pośredniczące uruchamiane, jeśli żaden punkt końcowy nie obsługuje żądania.

WebApplication program automatycznie dodaje następujące oprogramowanie pośredniczące w Minimal API applications zależności od określonych warunków:

  • UseDeveloperExceptionPage element jest dodawany jako pierwszy, gdy parametr ma wartość HostingEnvironment "Development".
  • UseRouting Jest dodawany drugi, jeśli kod użytkownika nie został jeszcze wywołany UseRouting i jeśli istnieją skonfigurowane punkty końcowe, na przykład app.MapGet.
  • UseEndpoints Jest dodawany na końcu potoku oprogramowania pośredniczącego, jeśli są skonfigurowane jakiekolwiek punkty końcowe.
  • UseAuthentication jest dodawany natychmiast po UseRouting tym, jak kod użytkownika nie został jeszcze wywołany UseAuthentication i czy IAuthenticationSchemeProvider można go wykryć u dostawcy usług. IAuthenticationSchemeProvider program jest domyślnie dodawany podczas korzystania z usług AddAuthentication, a usługa jest wykrywana przy użyciu polecenia IServiceProviderIsService.
  • UseAuthorization Zostanie dodany dalej, jeśli kod użytkownika nie został jeszcze wywołany UseAuthorization i czy IAuthorizationHandlerProvider można go wykryć u dostawcy usług. IAuthorizationHandlerProvider program jest domyślnie dodawany podczas korzystania z usług AddAuthorization, a usługa jest wykrywana przy użyciu polecenia IServiceProviderIsService.
  • Oprogramowanie pośredniczące skonfigurowane przez użytkownika i punkty końcowe są dodawane między elementami UseRouting i UseEndpoints.

Poniższy kod jest w rzeczywistości tym, co tworzy automatyczne oprogramowanie pośredniczące dodawane do aplikacji:

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 => {});

W niektórych przypadkach domyślna konfiguracja oprogramowania pośredniczącego nie jest poprawna dla aplikacji i wymaga modyfikacji. Na przykład UseCors należy wywołać metodę przed UseAuthentication i UseAuthorization. Aplikacja musi wywołać metodę UseAuthentication , a UseAuthorization jeśli UseCors jest wywoływana:

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

Jeśli oprogramowanie pośredniczące powinno być uruchamiane przed rozpoczęciem dopasowywania tras, UseRouting należy wywołać metodę , a oprogramowanie pośredniczące powinno zostać umieszczone przed wywołaniem metody UseRouting. UseEndpoints nie jest wymagany w tym przypadku, ponieważ jest automatycznie dodawany zgodnie z wcześniejszym opisem:

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

app.UseRouting();

// other middleware and endpoints

Podczas dodawania oprogramowania pośredniczącego terminalu:

  • Oprogramowanie pośredniczące musi zostać dodane po .UseEndpoints
  • Aplikacja musi wywołać metodę UseRouting i UseEndpoints tak, aby oprogramowanie pośredniczące terminalu można było umieścić w odpowiedniej lokalizacji.
app.UseRouting();

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

app.UseEndpoints(e => {});

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

Oprogramowanie pośredniczące terminala to oprogramowanie pośredniczące uruchamiane, jeśli żaden punkt końcowy nie obsługuje żądania.

Aby uzyskać informacje na temat oprogramowania pośredniczącego chroniącego przed fałszerzami w minimalnych interfejsach API, zobacz Zapobieganie atakom fałszowania żądań między witrynami (XSRF/CSRF) w ASP.NET Core

Aby uzyskać więcej informacji na temat oprogramowania pośredniczącego, zobacz ASP.NET Core Middleware oraz listę wbudowanego oprogramowania pośredniczącego, które można dodać do aplikacji.

Aby uzyskać więcej informacji na temat minimalnych interfejsów API, zobacz Minimal APIs overview.