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ı
- ASP.NET Barındırma ile Web API'sini Yapılandırma
- OWIN Kendi Kendine Barındırma ile Web API'sini Yapılandırma
- Genel Web API Hizmetleri
- Denetleyici Başına Yapılandırma
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.
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.
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.