ASP.NET Web API 2'yi yapılandırma

Bu konuda, ASP.NET Web API'sini yapılandırma açıklanmaktadır.

Yapılandırma Ayarları

Web API yapılandırma ayarları HttpConfiguration sınıfında tanımlanır.

Üye Description
DependencyResolver Denetleyiciler için bağımlılık eklemeyi etkinleştirir. Bkz. Web API'sini Kullanma Bağımlılık Çözümleyicisi.
Filtreler Eylem filtreleri.
Biçimlendiriciler Medya türü biçimlendiriciler.
IncludeErrorDetailPolicy Sunucunun HTTP yanıt iletilerine özel durum iletileri ve yığın izlemeleri gibi hata ayrıntılarını ekleyip eklemeyeceğini belirtir. Bkz . IncludeErrorDetailPolicy.
Başlatıcı HttpConfiguration'ın son başlatmasını gerçekleştiren bir işlev.
messagehandlers HTTP ileti işleyicileri.
ParameterBindingRules Denetleyici eylemlerinde parametreleri bağlamaya yönelik kurallar koleksiyonu.
Özellikler Genel bir özellik çantası.
Rotalar Yolların koleksiyonu. Bkz . ASP.NET Web API'sinde yönlendirme.
Hizmetler Hizmet koleksiyonu. Bkz. Hizmetler.

Önkoşullar

Visual Studio 2017 Community, Professional veya Enterprise sürümü.

ASP.NET Barındırma ile Web API'sini Yapılandırma

ASP.NET bir uygulamada, Application_Start yönteminde GlobalConfiguration.Configure komutunu çağırarak Web API'sini yapılandırın. Configure yöntemi, HttpConfiguration türünde tek bir parametreye sahip bir temsilci alır. Tüm yapılandırmanızı temsilci içinde gerçekleştirin.

Anonim temsilci kullanan bir örnek aşağıda verilmiştir:

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 Projesi iletişim kutusunda "Web API'sini" seçerseniz "ASP.NET Web Uygulaması" proje şablonu yapılandırma kodunu otomatik olarak ayarlar.

Yapılandırma kodunu otomatik olarak ayarlamak için Web A P I onay kutusunun seçili olduğu Yeni A S P nokta NET Projesi iletişim kutusunun ekran görüntüsü.

Proje şablonu, App_Start klasörünün içinde WebApiConfig.cs adlı bir dosya oluşturur. Bu kod dosyası, Web API yapılandırma kodunuzu yerleştirmeniz gereken temsilciyi tanımlar.

Web A P I Yapılandırma nokta c'nin Uygulama Başlangıç klasörünün içinde kırmızıyla vurgulandığı Çözüm Gezgini iletişim kutusunun ekran görüntüsü.

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, Application_Start temsilciyi çağıran kodu da ekler.

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

OWIN Self-Hosting ile Web API'sini yapılandırma

OWIN ile kendi kendine barındırıyorsanız yeni bir HttpConfiguration örneği oluşturun. Bu örnekte herhangi bir yapılandırma gerçekleştirin ve örneği Owin.UseWebApi uzantısı yöntemine geçirin.

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

Web API 2'yi Self-Host ASP.NET için OWIN kullanma öğreticisi tüm adımları gösterir.

Genel Web API Hizmetleri

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ığı bir dizi genel hizmet içerir.

Not

Hizmetler koleksiyonu, hizmet bulma veya bağımlılık ekleme için genel amaçlı bir mekanizma değildir. Yalnızca Web API çerçevesi tarafından bilinen hizmet türlerini depolar.

Hizmetler koleksiyonu varsayılan bir hizmet kümesiyle başlatılır ve kendi özel uygulamalarınızı sağlayabilirsiniz. Bazı hizmetler birden çok örneği desteklerken, diğerlerinin yalnızca bir örneği olabilir. (Bununla birlikte, denetleyici düzeyinde de hizmet sağlayabilirsiniz; bkz. Denetleyici Başına Yapılandırma.

Single-Instance Hizmetleri

Hizmet Açıklama
IActionValueBinder Bir parametre için bağlama alır.
IApiExplorer Uygulama tarafından kullanıma sunulan API'lerin açıklamalarını alır. Bkz. Web API'si için Yardım Sayfası Oluşturma.
IAssembliesResolver Uygulama için derlemelerin listesini alır. Bkz . Yönlendirme ve Eylem Seçimi.
IBodyModelValidator İstek gövdesinden medya türü biçimlendirici tarafından okunan bir modeli doğrular.
IContentNegotiator İçerik anlaşması gerçekleştirir.
IDocumentationProvider API'ler için belgeler sağlar. Varsayılan değer null'tır. Bkz. Web API'si için Yardım Sayfası Oluşturma.
IHostBufferPolicySelector Konağın HTTP iletisi varlık gövdelerini arabelleğe alıp almayacağını gösterir.
IHttpActionInvoker Bir denetleyici eylemi çağırır. Bkz . Yönlendirme ve Eylem Seçimi.
IHttpactionSelector Bir denetleyici eylemi seçer. Bkz . Yönlendirme ve Eylem Seçimi.
IHttpControllerActivator Denetleyiciyi etkinleştirir. Bkz . Yönlendirme ve Eylem Seçimi.
IHttpControllerSelector Bir denetleyici seçer. Bkz . Yönlendirme ve Eylem Seçimi.
IHttpControllerTypeResolver Uygulamadaki Web API denetleyicisi türlerinin listesini sağlar. Bkz . Yönlendirme ve Eylem Seçimi.
ITraceManager İzleme çerçevesini başlatır. Bkz . ASP.NET Web API'sinde izleme.
ITraceWriter bir izleme yazıcısı sağlar. Varsayılan değer bir "no-op" izleme yazıcıdır. Bkz . ASP.NET Web API'sinde izleme.
IModelValidatorCache Model doğrulayıcılarının önbelleğini sağlar.

Multiple-Instance Hizmetleri

Hizmet Açıklama
Ifilterprovider Denetleyici eyleminin filtre listesini döndürür.
ModelBinderProvider Belirli bir tür için model bağlayıcısı döndürür.
ModelMetadataProvider Model için meta veriler sağlar.
ModelValidatorProvider Bir model için doğrulayıcı sağlar.
Valueproviderfactory Bir değer sağlayıcısı oluşturur. Daha fazla bilgi için Mike Stall'ın WebAPI'de özel değer sağlayıcısı oluşturma blog gönderisine bakın

Çok örnekli bir hizmete özel uygulama eklemek için Hizmetler koleksiyonunda Ekle veya Ekle'yi çağırın:

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

Tek örnekli bir hizmeti özel bir uygulamayla değiştirmek için Hizmetler koleksiyonunda Değiştir'i çağırın:

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

Per-Controller Yapılandırması

Denetleyici başına aşağıdaki ayarları geçersiz kılabilirsiniz:

  • Medya türü biçimlendiriciler
  • Parametre bağlama kuralları
  • Hizmetler

Bunu yapmak için , IControllerConfiguration arabirimini uygulayan özel bir öznitelik tanımlayın. Ardından özniteliğini denetleyiciye uygulayın.

Aşağıdaki örnek, varsayılan medya türü biçimlendiricileri özel bir biçimlendirici ile değiştirir.

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:

  • HttpControllerSettings nesnesi
  • HttpControllerDescriptor nesnesi

HttpControllerDescriptor, bilgilendirici amaçlarla inceleyebileceğiniz denetleyicinin açıklamasını içerir (örneğin, iki denetleyiciyi ayırt etmek için).

Denetleyiciyi yapılandırmak için HttpControllerSettings nesnesini kullanın. Bu nesne, denetleyici başına geçersiz kılabileceğiniz yapılandırma parametrelerinin alt kümesini içerir. Değiştirmediğiniz tüm ayarlar varsayılan olarak genel HttpConfiguration nesnesine dönüşür.