Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описывается настройка веб-API ASP.NET.
- Параметры конфигурации
- Настройка веб-API с помощью хостинга ASP.NET
- Настройка веб-API с использованием самостоятельного хостинга OWIN
- Глобальные веб-API-службы
- Конфигурация контроллера
Параметры конфигурации
Параметры конфигурации веб-API определяются в классе HttpConfiguration .
| Член | Описание |
|---|---|
| DependencyResolver | Включает внедрение зависимостей для контроллеров. См. раздел "Использование сопоставителя зависимостей веб-API". |
| Фильтры | Фильтры действий. |
| Форматировщики | Средства форматирования типов мультимедиа. |
| IncludeErrorDetailPolicy | Указывает, должен ли сервер включать сведения об ошибках, такие как сообщения об исключениях и трассировки стека, в сообщениях ответа HTTP. См. IncludeErrorDetailPolicy. |
| Инициализатор | Функция, которая выполняет окончательную инициализацию httpConfiguration. |
| MessageHandlers | Обработчики сообщений HTTP. |
| ParameterBindingRules | Коллекция правил для привязки параметров действий контроллера. |
| Свойства | Общий набор свойств. |
| Маршруты | Набор маршрутов. См. статью "Маршрутизация" в веб-API ASP.NET. |
| Сервисы; | Набор услуг. См. статью "Службы". |
Необходимые условия
Visual Studio 2017 Выпуск Community, Professional или Enterprise.
Настройка веб-API с помощью размещения ASP.NET
В приложении ASP.NET настройте веб-API путем вызова GlobalConfiguration.Configure в методе Application_Start . Метод Configure принимает делегат с одним параметром типа HttpConfiguration. Выполните всю конфигурацию внутри делегата.
Ниже приведен пример использования анонимного делегата:
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 }
);
});
}
}
}
В Visual Studio 2017 шаблон проекта "ASP.NET веб-приложение" автоматически настраивает код конфигурации, если выбрать веб-API в диалоговом окне "Новый ASP.NET проект ".
Шаблон проекта создает файл с именем WebApiConfig.cs в папке App_Start. Этот файл кода определяет делегат, в который нужно внедрить код конфигурации Web 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 }
);
}
}
}
Шаблон проекта также добавляет код, вызывающий делегат из Application_Start.
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
Настройка веб-API с помощью OWIN Self-Hosting
При самостоятельном размещении с помощью OWIN создайте новый экземпляр HttpConfiguration . Выполните любую конфигурацию этого экземпляра, а затем передайте экземпляр в метод расширения 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);
}
}
Руководство использования OWIN для самостоятельного хостинга ASP.NET Web API 2 показывает все шаги.
Глобальные веб-API-службы
Коллекция HttpConfiguration.Services содержит набор глобальных служб, которые веб-API использует для выполнения различных задач, таких как выбор контроллера и согласование содержимого.
Замечание
Коллекция служб не является механизмом общего назначения для обнаружения служб или внедрения зависимостей. Он хранит только типы служб, известные платформе веб-API.
Коллекция служб инициализирована с набором служб по умолчанию, и вы можете предоставить собственные пользовательские реализации. Некоторые службы поддерживают несколько экземпляров, а другие могут иметь только один экземпляр. (Однако вы также можете предоставлять службы на уровне контроллера; см. Конфигурация для каждого контроллера.
службы Single-Instance
| Услуга | Описание |
|---|---|
| IActionValueBinder | Возвращает привязку для параметра. |
| IApiExplorer | Возвращает описания API, предоставляемых приложением. См . статью "Создание страницы справки" для веб-API. |
| IAssembliesResolver | Возвращает список сборок для приложения. См. раздел "Маршрутизация" и "Выбор действия". |
| IBodyModelValidator | Проверяет модель, считываемую из текста запроса с помощью средства форматирования типа мультимедиа. |
| IContentNegotiator | Выполняет согласование содержимого. |
| IDocumentationProvider | Предоставляет документацию по API. Значение по умолчанию равно NULL. См . статью "Создание страницы справки" для веб-API. |
| IHostBufferPolicySelector | Указывает, должен ли хост буферировать тела сущностей HTTP-сообщения. |
| IHttpActionInvoker | Вызывает действие контроллера. См. раздел "Маршрутизация" и "Выбор действия". |
| IHttpActionSelector | Выбирает действие контроллера. См. раздел "Маршрутизация" и "Выбор действия". |
| IHttpControllerActivator | Активирует контроллер. См. раздел "Маршрутизация" и "Выбор действия". |
| IHttpControllerSelector | Выбирает контроллер. См. раздел "Маршрутизация" и "Выбор действия". |
| IHttpControllerTypeResolver | Содержит список типов контроллеров веб-API в приложении. См. раздел "Маршрутизация" и "Выбор действия". |
| ITraceManager | Инициализирует фреймворк трассировки. См. Трассировка в ASP.NET Web API. |
| ITraceWriter | Предоставляет средство записи трассировки. По умолчанию используется модуль записи трассировки "без операций". См. статью "Трассировка" в веб-API ASP.NET. |
| IModelValidatorCache | Предоставляет кэш валидаторов моделей. |
службы Multiple-Instance
| Услуга | Описание |
|---|---|
| IFilterProvider | Возвращает список фильтров для действия контроллера. |
| ModelBinderProvider | Возвращает модельный привязчик для заданного типа. |
| ModelMetadataProvider | Предоставляет метаданные для модели. |
| ModelValidatorProvider | Предоставляет валидатор для модели. |
| ValueProviderFactory | Создает поставщика значений. Дополнительные сведения см. в записи блога Майка Стойла о создании поставщика настраиваемых значений в WebAPI |
Чтобы добавить пользовательскую реализацию в службу с несколькими экземплярами, вызовите Add или Insert в коллекции Services:
config.Services.Add(typeof(IFilterProvider), new MyFilterProvider());
Чтобы заменить одиночный экземпляр службы на пользовательскую реализацию, вызовите Replace в коллекции Services :
config.Services.Replace(typeof(ITraceWriter), new MyTraceWriter());
Конфигурация для каждого контроллера
Для каждого контроллера можно переопределить следующие параметры:
- Средства форматирования типов мультимедиа
- Правила привязки параметров
- Services
Для этого определите пользовательский атрибут, реализующий интерфейс IControllerConfiguration . Затем примените атрибут к контроллеру.
В следующем примере заменяются средства форматирования типов мультимедиа по умолчанию настраиваемым форматировщиком.
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...
}
}
Метод IControllerConfiguration.Initialize принимает два параметра:
- Объект HttpControllerSettings
- Объект HttpControllerDescriptor
HttpControllerDescriptor содержит описание контроллера, который можно изучить для информационных целей (например, чтобы различать два контроллера).
Используйте объект HttpControllerSettings для настройки контроллера. Этот объект содержит подмножество параметров конфигурации, которые можно переопределить для каждого контроллера отдельно. Любые параметры, которые вы не изменяете, по умолчанию применяются к глобальному объекту HttpConfiguration.