ASP.NET Web API 2 yapılandırılıyorConfiguring ASP.NET Web API 2

, Mike te sonby Mike Wasson

Bu konu, ASP.NET Web API 'sinin nasıl yapılandırılacağını açıklamaktadır.This topic describes how to configure ASP.NET Web API.

Yapılandırma ayarlarıConfiguration Settings

Web API yapılandırma ayarları, HttpConfiguration sınıfında tanımlanmıştır.Web API configuration settings are defined in the HttpConfiguration class.

ÜyeMember AçıklamaDescription
DependencyResolverDependencyResolver Denetleyiciler için bağımlılık eklenmesine izin vermez.Enables dependency injection for controllers. Bkz. Web API bağımlılığı çözümleyici 'Yi kullanma.See Using the Web API Dependency Resolver.
FiltrelerFilters Eylem filtreleri.Action filters.
BiçimlendiricileriFormatters Medya türü formatlayıcıları.Media-type formatters.
IncludeerrordetailpolicyIncludeErrorDetailPolicy Sunucunun HTTP yanıt iletilerinde özel durum iletileri ve yığın izlemeleri gibi hata ayrıntılarını içerip içermediğini belirtir.Specifies whether the server should include error details, such as exception messages and stack traces, in HTTP response messages. Bkz. ıncludeerrordetailpolicy.See IncludeErrorDetailPolicy.
İzerInitializer HttpConfiguration'ın nihai başlatmasını gerçekleştiren bir işlev.A function that performs final initialization of the HttpConfiguration.
MessageHandlersMessageHandlers Http ileti işleyicileri.HTTP message handlers.
ParameterBindingRulesParameterBindingRules Denetleyici eylemleriyle ilgili parametreleri bağlama kuralları koleksiyonu.A collection of rules for binding parameters on controller actions.
ÖzelliklerProperties Genel bir özellik paketi.A generic property bag.
RotalarRoutes Yolların koleksiyonu.The collection of routes. Bkz. ASP.NET Web API 'de yönlendirme.See Routing in ASP.NET Web API.
HizmetlerServices Hizmet koleksiyonu.The collection of services. Bkz. Hizmetler.See Services.

ÖnkoşullarPrerequisites

Visual Studio 2017 Community, Professional veya Enterprise Edition.Visual Studio 2017 Community, Professional, or Enterprise edition.

ASP.NET Hosting ile Web API 'sini yapılandırmaConfiguring Web API with ASP.NET Hosting

Bir ASP.NET uygulamasında, application_start yönteminde Globalconfiguration. configure ' ı çağırarak Web API 'sini yapılandırın.In an ASP.NET application, configure Web API by calling GlobalConfiguration.Configure in the Application_Start method. Configure yöntemi, HttpConfigurationtüründe tek bir parametreye sahip bir temsilci alır.The Configure method takes a delegate with a single parameter of type HttpConfiguration. Temsilcinin içindeki tüm yapılandırmanızı gerçekleştirin.Perform all of your configuration inside the delegate.

Anonim bir temsilci kullanarak bir örnek aşağıda verilmiştir:Here is an example using an anonymous delegate:

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 ' de, yeni ASP.NET proje iletişim kutusunda "Web API 'si" seçeneğini belirlerseniz, "ASP.NET Web uygulaması" proje şablonu otomatik olarak yapılandırma kodunu ayarlar.In Visual Studio 2017, the "ASP.NET Web Application" project template automatically sets up the configuration code, if you select "Web API" in the New ASP.NET Project dialog.

Proje şablonu, uygulama_başlangıç klasörü içinde WebApiConfig.cs adlı bir dosya oluşturur.The project template creates a file named WebApiConfig.cs inside the App_Start folder. Bu kod dosyası, Web API yapılandırma kodunuzu yerleştirmeniz gereken temsilciyi tanımlar.This code file defines the delegate where you should put your Web API configuration code.

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

Proje şablonu, uygulamayı_Başlat'dan çağıran kodu de ekler.The project template also adds the code that calls the delegate from Application_Start.

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

Web API 'sini OWıN Self-hosting ile yapılandırmaConfiguring Web API with OWIN Self-Hosting

OWIN ile kendi kendini barındırıyorsanız, yeni bir HttpConfiguration örneği oluşturun.If you are self-hosting with OWIN, create a new HttpConfiguration instance. Bu örnekte herhangi bir yapılandırma gerçekleştirin ve ardından örneği Owin. UseWebApi uzantı yöntemine geçirin.Perform any configuration on this instance, and then pass the instance to the Owin.UseWebApi extension method.

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

Öğreticide, self-Host ASP.NET Web API 2 IÇIN OWIN kullanımı tam adımları gösterir.The tutorial Use OWIN to Self-Host ASP.NET Web API 2 shows the complete steps.

Küresel Web API hizmetleriGlobal Web API Services

HttpConfiguration. Services koleksiyonu, Web API 'sinin denetleyici seçimi ve içerik anlaşması gibi çeşitli görevleri gerçekleştirmek için kullandığı küresel hizmetler kümesini içerir.The HttpConfiguration.Services collection contains a set of global services that Web API uses to perform various tasks, such as controller selection and content negotiation.

Note

Hizmetler koleksiyonu, hizmet bulma veya bağımlılık ekleme için genel amaçlı bir mekanizma değildir.The Services collection is not a general-purpose mechanism for service discovery or dependency injection. Yalnızca Web API çerçevesi tarafından bilinen hizmet türlerini depolar.It only stores service types that are known to the Web API framework.

Hizmetler koleksiyonu varsayılan bir hizmet kümesiyle başlatılır ve kendi özel uygulamalarınızı sağlayabilirsiniz.The Services collection is initialized with a default set of services, and you can provide your own custom implementations. Bazı hizmetler birden çok örneği destekler, diğerleri ise yalnızca bir örneğe sahip olabilir.Some services support multiple instances, while others can have only one instance. (Ancak, denetleyici düzeyinde hizmetler de sağlayabilirsiniz; bkz. Denetleyici başına yapılandırma.(However, you can also provide services at the controller level; see Per-Controller Configuration.

Tek örnekli hizmetlerSingle-Instance Services

HizmetService AçıklamaDescription
IactionvalueciltçiIActionValueBinder Bir parametre için bir bağlama alır.Gets a binding for a parameter.
IApiExplorerIApiExplorer Uygulamanın açığa çıkarılan API 'lerin açıklamalarını alır.Gets descriptions of the APIs exposed by the application. Bkz. Web API 'si Için yardım sayfası oluşturma.See Creating a Help Page for a Web API.
IbirleştiricliesresolverIAssembliesResolver Uygulama için derlemelerin bir listesini alır.Gets a list of the assemblies for the application. Bkz. Yönlendirme ve eylem seçimi.See Routing and Action Selection.
IbodymodelvalidatorIBodyModelValidator Bir medya türü biçimlendirici tarafından istek gövdesinden okunan modeli doğrular.Validates a model that is read from the request body by a media-type formatter.
IditentnegotiatorIContentNegotiator İçerik anlaşmasını gerçekleştirir.Performs content negotiation.
IbelgetationproviderIDocumentationProvider API 'Ler için belgeler sağlar.Provides documentation for APIs. Varsayılan değer null.The default is null. Bkz. Web API 'si Için yardım sayfası oluşturma.See Creating a Help Page for a Web API.
IhostbufferpolicyselectorIHostBufferPolicySelector Konağın HTTP ileti varlık gövdelerini arabelleğe kullanıp kullanmayacağını belirtir.Indicates whether the host should buffer HTTP message entity bodies.
IhttpactionınvokerIHttpActionInvoker Bir denetleyici eylemi çağırır.Invokes a controller action. Bkz. Yönlendirme ve eylem seçimi.See Routing and Action Selection.
IhttpactionselectorIHttpActionSelector Bir denetleyici eylemi seçer.Selects a controller action. Bkz. Yönlendirme ve eylem seçimi.See Routing and Action Selection.
IhttpcontrolleretkinleştiriciIHttpControllerActivator Denetleyiciyi etkinleştirir.Activates a controller. Bkz. Yönlendirme ve eylem seçimi.See Routing and Action Selection.
IHttpControllerSelectorIHttpControllerSelector Bir denetleyici seçer.Selects a controller. Bkz. Yönlendirme ve eylem seçimi.See Routing and Action Selection.
IhttpcontrollertyperesolverIHttpControllerTypeResolver Uygulamadaki Web API denetleyicisi türlerinin bir listesini sağlar.Provides a list of the Web API controller types in the application. Bkz. Yönlendirme ve eylem seçimi.See Routing and Action Selection.
IstracemanagerITraceManager İzleme çerçevesini başlatır.Initializes the tracing framework. Bkz. ASP.NET Web API 'de izleme.See Tracing in ASP.NET Web API.
IstracewriterITraceWriter Bir izleme yazıcısı sağlar.Provides a trace writer. Varsayılan değer "Hayır-op" izleme yazdır.The default is a "no-op" trace writer. Bkz. ASP.NET Web API 'de izleme.See Tracing in ASP.NET Web API.
ImodelvalidatorcacheIModelValidatorCache Model Doğrulayıcıları için bir önbellek sağlar.Provides a cache of model validators.

Birden çok örnekli hizmetlerMultiple-Instance Services

HizmetService AçıklamaDescription
IFilterProviderIFilterProvider Bir denetleyici eylemi için filtrelerin listesini döndürür.Returns a list of filters for a controller action.
ModelBinderProviderModelBinderProvider Verilen tür için bir model Bağlayıcısı döndürür.Returns a model binder for a given type.
ModelMetadataProviderModelMetadataProvider Bir model için meta veriler sağlar.Provides metadata for a model.
ModelValidatorProviderModelValidatorProvider Bir model için doğrulayıcı sağlar.Provides a validator for a model.
ValueProviderFactoryValueProviderFactory Bir değer sağlayıcısı oluşturur.Creates a value provider. Daha fazla bilgi için bkz. Mike Cepin blog gönderisi, WebAPI 'de özel değer sağlayıcısı oluşturmaFor more information, see Mike Stall's blog post How to create a custom value provider in WebAPI

Çok örnekli bir hizmete özel bir uygulama eklemek için, Hizmetler koleksiyonuna Ekle veya Ekle ' yi çağırın:To add a custom implementation to a multi-instance service, call Add or Insert on the Services collection:

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

Tek örnekli bir hizmeti özel bir uygulamayla değiştirmek için, hizmet koleksiyonundaki değiştirme 'yi çağırın:To replace a single-instance service with a custom implementation, call Replace on the Services collection:

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

Denetleyici başına yapılandırmaPer-Controller Configuration

Aşağıdaki ayarları denetleyiciye göre geçersiz kılabilirsiniz:You can override the following settings on a per-controller basis:

  • Medya türü formatlayıcılarıMedia-type formatters
  • Parametre bağlama kurallarıParameter binding rules
  • HizmetlerServices

Bunu yapmak için, Icontrollerconfiguration arabirimini uygulayan özel bir öznitelik tanımlayın.To do so, define a custom attribute that implements the IControllerConfiguration interface. Ardından özniteliği denetleyiciye uygulayın.Then apply the attribute to the controller.

Aşağıdaki örnek, varsayılan medya türü formatlayıcıları özel bir biçimlendirici ile değiştirilir.The following example replaces the default media-type formatters with a custom formatter.

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 yöntemi iki parametre alır:The IControllerConfiguration.Initialize method takes two parameters:

  • Bir Httpcontrollersettings nesnesiAn HttpControllerSettings object
  • Bir Httpcontrollerdescriptor nesnesiAn HttpControllerDescriptor object

Httpcontrollerdescriptor , denetleyicinin bir açıklamasını içerir ve bu, bilgilendirici amaçlar için inceleyebilirsiniz (iki denetleyiciyi ayırt etmek için deyin).The HttpControllerDescriptor contains a description of the controller, which you can examine for informational purposes (say, to distinguish between two controllers).

Denetleyiciyi yapılandırmak için Httpcontrollersettings nesnesini kullanın.Use the HttpControllerSettings object to configure the controller. Bu nesne, denetleyiciye göre geçersiz kılabileceğiniz yapılandırma parametrelerinin alt kümesini içerir.This object contains the subset of configuration parameters that you can override on a per-controller basis. Varsayılan olarak, genel HttpConfiguration nesnesi olarak değiştirmezsiniz.Any settings that you don't change default to the global HttpConfiguration object.