Konfigurace webového rozhraní API ASP.NET 2

Toto téma popisuje, jak nakonfigurovat ASP.NET webové rozhraní API.

Nastavení konfigurace

Nastavení konfigurace webového rozhraní API jsou definována ve třídě HttpConfiguration .

Člen Description
DependencyResolver Povolí injektáž závislostí pro kontrolery. Viz Použití překladače závislostí webového rozhraní API.
Filtry Filtry akcí.
Formatters Formátovací moduly typu multimédií.
IncludeErrorDetailPolicy Určuje, jestli má server obsahovat podrobnosti o chybách, jako jsou zprávy o výjimce a trasování zásobníku, do zpráv odpovědí HTTP. Viz IncludeErrorDetailPolicy.
Inicializátor Funkce, která provádí konečnou inicializaci HttpConfiguration.
Obslužné rutiny zpráv Obslužné rutiny zpráv HTTP.
ParameterBindingRules Kolekce pravidel pro parametry vazby pro akce kontroleru.
Vlastnosti Obecný pytel vlastností.
Trasy Kolekce tras. Viz Směrování ve webovém rozhraní API ASP.NET.
Služby Kolekce služeb. Viz Služby.

Požadavky

Visual Studio 2017 Edice Community, Professional nebo Enterprise.

Konfigurace webového rozhraní API s využitím hostování ASP.NET

V ASP.NET aplikaci nakonfigurujte webové rozhraní API voláním globalConfiguration.Configure v metodě Application_Start . Metoda Configure přebírá delegáta s jedním parametrem typu HttpConfiguration. Proveďte veškerou konfiguraci uvnitř delegáta.

Tady je příklad použití anonymního delegáta:

using System.Web.Http;
namespace WebApplication1
{
    public class WebApiApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            GlobalConfiguration.Configure(config =>
            {
                config.MapHttpAttributeRoutes();

                config.Routes.MapHttpRoute(
                    name: "DefaultApi",
                    routeTemplate: "api/{controller}/{id}",
                    defaults: new { id = RouteParameter.Optional }
                );
            });
        }
    }
}

V sadě Visual Studio 2017 šablona projektu "ASP.NET Web Application" automaticky nastaví konfigurační kód, pokud v dialogovém okně Nový projekt ASP.NET vyberete webové rozhraní API.

Snímek obrazovky s dialogovým oknem Nový projekt S P dot NET s vybraným zaškrtávacím políkem Web A P I pro automatické nastavení konfiguračního kódu

Šablona projektu vytvoří soubor s názvem WebApiConfig.cs ve složce App_Start. Tento soubor kódu definuje delegáta, kam byste měli vložit konfigurační kód webového rozhraní API.

Snímek obrazovky s Průzkumník řešení dialogovým oknem a červeně ohraničeným webem A P I Config c s ve složce Start aplikace

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;

namespace WebApplication1
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // TODO: Add any additional configuration code.

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
}

Šablona projektu také přidá kód, který volá delegáta z Application_Start.

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }
}

Konfigurace webového rozhraní API pomocí Self-Hosting OWIN

Pokud používáte samoobslužné hostování pomocí OWIN, vytvořte novou instanci HttpConfiguration . Proveďte jakoukoli konfiguraci této instance a pak předejte instanci metodě rozšíření Owin.UseWebApi .

public class Startup 
{ 
    public void Configuration(IAppBuilder appBuilder) 
    { 
        HttpConfiguration config = new HttpConfiguration(); 

        config.Routes.MapHttpRoute( 
            name: "DefaultApi", 
            routeTemplate: "api/{controller}/{id}", 
            defaults: new { id = RouteParameter.Optional } 
        ); 

        appBuilder.UseWebApi(config); 
    } 
}

Kompletní kroky najdete v kurzu Použití OWIN k Self-Host ASP.NET webového rozhraní API 2 .

Globální služby webového rozhraní API

Kolekce HttpConfiguration.Services obsahuje sadu globálních služeb, které webové rozhraní API používá k provádění různých úloh, jako je výběr kontroleru a vyjednávání obsahu.

Poznámka

Kolekce Services není obecný mechanismus pro zjišťování služeb nebo injektáž závislostí. Ukládá pouze typy služeb, které jsou známé architektuře webového rozhraní API.

Kolekce Services se inicializuje s výchozí sadou služeb a můžete poskytovat vlastní implementace. Některé služby podporují více instancí, zatímco jiné můžou mít jenom jednu instanci. (Můžete ale také poskytovat služby na úrovni kontroleru. Viz Konfigurace podle kontroleru.

Single-Instance Services

Služba Popis
IActionValueBinder Získá vazbu pro parametr.
IApiExplorer Získá popisy rozhraní API vystavené aplikací. Viz Vytvoření stránky nápovědy pro webové rozhraní API.
IAssembliesResolver Získá seznam sestavení pro aplikaci. Viz Výběr směrování a akce.
IBodyModelValidator Ověří model, který je načten z textu požadavku formátovacím typem média.
IContentNegotiator Provádí vyjednávání obsahu.
IDocumentationProvider Poskytuje dokumentaci k rozhraním API. Výchozí hodnota je null. Viz Vytvoření stránky nápovědy pro webové rozhraní API.
IHostBufferPolicySelector Označuje, jestli má hostitel ukládat do vyrovnávací paměti těla entit zpráv HTTP.
IHttpActionInvoker Vyvolá akci kontroleru. Viz Výběr směrování a akce.
IHttpActionSelector Vybere akci kontroleru. Viz Výběr směrování a akce.
IHttpControllerActivator Aktivuje kontroler. Viz Výběr směrování a akce.
IHttpControllerSelector Vybere kontroler. Viz Výběr směrování a akce.
IHttpControllerTypeResolver Poskytuje seznam typů kontroleru webového rozhraní API v aplikaci. Viz Výběr směrování a akce.
ITraceManager Inicializuje architekturu trasování. Viz Trasování ve webovém rozhraní API ASP.NET.
ITraceWriter Poskytuje zapisovač trasování. Výchozí je zapisovač trasování bez operace. Viz Trasování ve webovém rozhraní API ASP.NET.
IModelValidatorCache Poskytuje mezipaměť validátorů modelů.

Multiple-Instance Services

Služba Popis
IFilterProvider Vrátí seznam filtrů pro akci kontroleru.
ModelBinderProvider Vrátí pořadač modelu pro daný typ.
ModelMetadataProvider Poskytuje metadata pro model.
ModelValidatorProvider Poskytuje validátor pro model.
ValueProviderFactory Vytvoří zprostředkovatele hodnot. Další informace najdete v blogovém příspěvku Mikea Stalla How to create a custom value provider in WebAPI

Pokud chcete přidat vlastní implementaci do služby s více instancemi, volejte Přidat nebo Vložit v kolekci Services :

config.Services.Add(typeof(IFilterProvider), new MyFilterProvider());

Pokud chcete nahradit službu s jednou instancí vlastní implementací, zavolejte Nahradit v kolekci Services :

config.Services.Replace(typeof(ITraceWriter), new MyTraceWriter());

konfigurace Per-Controller

U jednotlivých kontrolerů můžete přepsat následující nastavení:

  • Formátování typů médií
  • Pravidla vazby parametrů
  • Služby

Chcete-li to provést, definujte vlastní atribut, který implementuje rozhraní IControllerConfiguration . Potom atribut použijte na kontroleru.

Následující příklad nahradí výchozí formátovací moduly typu média vlastním formátovačem.

using System;
using System.Web.Http;
using System.Web.Http.Controllers;

namespace WebApplication1.Controllers
{

    public class UseMyFormatterAttribute : Attribute, IControllerConfiguration
    {
        public void Initialize(HttpControllerSettings settings,
            HttpControllerDescriptor descriptor)
        {
            // Clear the formatters list.
            settings.Formatters.Clear();

            // Add a custom media-type formatter.
            settings.Formatters.Add(new MyFormatter());
        }
    }

    [UseMyFormatter]
    public class ValuesController : ApiController
    {
        // Controller methods not shown...
    }
}

Metoda IControllerConfiguration.Initialize přijímá dva parametry:

  • Objekt HttpControllerSettings
  • Objekt HttpControllerDescriptor

Popisovač HttpControllerDescriptor obsahuje popis kontroleru, který můžete zkontrolovat pro informační účely (například k rozlišení mezi dvěma kontrolery).

Pomocí objektu HttpControllerSettings nakonfigurujte kontroler. Tento objekt obsahuje podmnožinu konfiguračních parametrů, které můžete přepsat na základě kontroleru. Všechna nastavení, která nezměníte, ve výchozím nastavení na globální objekt HttpConfiguration .