Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Toto téma popisuje, jak nakonfigurovat ASP.NET webové rozhraní API.
- Nastavení konfigurace
- Konfigurace webového rozhraní API s využitím hostování ASP.NET
- Konfigurace webového rozhraní API pomocí samoobslužného hostování OWIN
- Globální služby webového rozhraní API
- Konfigurace Per-Controller
Nastavení konfigurace
Nastavení konfigurace webového rozhraní API jsou definována ve třídě HttpConfiguration .
| Člen | Description |
|---|---|
| DependencyResolver | Povolí injektování závislostí pro kontrolery. Viz Použití řešitele závislostí webového API. |
| Filtry | Filtry akcí |
| Formatters | Formátovací moduly typu multimédií |
| Politika zahrnutí podrobností o chybách | Určuje, zda má server zahrnout podrobnosti o chybách, jako jsou zprávy o výjimkách a trasování zásobníku, v odpovědích HTTP. Viz IncludeErrorDetailPolicy. |
| Inicializátor | Funkce, která provádí konečnou inicializaci HttpConfiguration. |
| Message Handlers | HTTP obslužné programy pro zprávy. |
| ParametrBindingRules | Kolekce pravidel pro vazbu parametrů pro akce ovladače. |
| Vlastnosti | Obecný kontejner vlastností |
| trasy | Kolekce tras. Viz Směrování ve webovém rozhraní API ASP.NET. |
| Services | Kolekce služeb. Viz Služby. |
Předpoklady
Visual Studio 2017 Community, Professional nebo Enterprise Edition.
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 webová aplikace" automaticky nastaví konfigurační kód, pokud v dialogovém okně Nový ASP.NET Projekt vyberete webové rozhraní API.
Šablona projektu vytvoří soubor s názvem WebApiConfig.cs uvnitř složky App_Start. Tento soubor kódu definuje delegáta, kam byste měli vložit konfigurační kód webového rozhraní API.
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í OWIN Self-Hosting
Pokud sami provozujete server 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);
}
}
V kurzu Použití OWIN k samohostování ASP.NET webového rozhraní API 2 jsou uvedeny všechny kroky.
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 Služeb není všestranný mechanismus pro vyhledávání služeb nebo injektáž závislostí. Ukládá pouze typy služeb, které jsou známé pro architekturu webového rozhraní API.
Kolekce Services se inicializuje s výchozí sadou služeb a můžete zadat vlastní implementace. Některé služby podporují více instancí, zatímco jiné můžou mít pouze jednu instanci. (Můžete ale také poskytovat služby na úrovni kontroleru; viz Per-Controller Konfigurace.
Single-Instance Services
| Service | Description |
|---|---|
| IActionValueBinder | Získá vazbu pro parametr. |
| IApiExplorer | Získá popisy rozhraní API, které poskytuje aplikace. 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ý byl přečten z textu požadavku pomocí formátovače formátu média. |
| IContentNegotiator | Provádí vyjednávání obsahu. |
| IDocumentationProvider | Poskytuje dokumentaci pro rozhraní API. Výchozí hodnota je null. Viz Vytvoření stránky nápovědy pro webové rozhraní API. |
| IHostBufferPolicySelector | Určuje, zda 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 rámec trasování. Viz Trasování ve webovém rozhraní API ASP.NET. |
| ITraceWriter | Poskytuje zapisovač trasování. Výchozí hodnota je zapisovač trasování bez operace (no-op). Viz Trasování ve webovém rozhraní API ASP.NET. |
| IModelValidatorCache | Poskytuje mezipaměť validátorů modelů. |
Služby s více instancemi
| Service | Description |
|---|---|
| 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 Mika Stallova s názvem How to create a custom value provider in WebAPI |
Pokud chcete do služby s více instancemi přidat vlastní implementaci, zavolejte přidat nebo vložit v kolekci Services :
config.Services.Add(typeof(IFilterProvider), new MyFilterProvider());
Chcete-li nahradit jednoinstanční službu vlastní implementací, zavolejte Replace v kolekci Services.
config.Services.Replace(typeof(ITraceWriter), new MyTraceWriter());
Konfigurace Per-Controller
Pro každý kontroler můžete přepsat následující nastavení:
- Formátování typů médií
- Pravidla vazby parametrů
- Services
Chcete-li to provést, definujte vlastní atribut, který implementuje IControllerConfiguration rozhraní. Potom na kontroler použijte atribut.
Následující příklad nahrazuje 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 má dva parametry:
- Objekt HttpControllerSettings
- Objekt HttpControllerDescriptor
Popisovač HttpControllerDescriptor obsahuje popis kontroleru, který můžete prozkoumat pro informační účely (například pro rozlišení mezi dvěma kontrolery).
Ke konfiguraci kontroleru použijte objekt HttpControllerSettings . Tento objekt obsahuje podmnožinu parametrů konfigurace, které lze přepsat na základě konkrétního kontroléru zařízení. Všechna nastavení, která nezměníte, budou výchozí v globálním objektu HttpConfiguration.