2012-09-05 11 views
12

için Yürütme Sırası Ortak yöntem sırası için böyle bir şey var mı? Ben RTM sürümüne Beta/RC sürümünden yükseltilmiş beriApiController

http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-46-38-WebApiStackDiagramsNew/6428.ASP.NET_5F00_MVC4_5F00_WebAPI_5F00_StackDiagram_5F00_Future.jpg

My Web Api çözümü şimdi bazı yöntemlerin yürütülmesinde yeni bir düzen vardır.

başlarında APIControllers bu yöntem çağrıldı (ileti işleyicisi yürütme Onun değil ters sırası):

public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext) 
{ 
} 

RTM sonra OnAuthorization benim AuthorizationFilter ait filtermethods önce

protected override void Initialize(System.Web.Http.Controllers.HttpControllerContext controllerContext) 
{ 
} 

önce Initialize() denir. ApiController yöntemlerinin yürütme sırası ve RTM sürümünden sonraki değişiklikler hakkında bazı bilgiler var mı? isteği varsayarsak

+0

huh? InitializeProcadController nereden geliyor? Projenin şu ana kadar kaynak kodunda böyle bir şey yok AFAIK. – tugberk

+0

Üzgünüm "Initialize()" yöntemi – user437899

cevap

34

ApiController kapsamına girer, çalışma sırası aşağıdaki gibidir:

  • ApiController arasında ExecuteAsync yöntemi çağrılır.
  • ApiController'un Initialize yöntemi çağrılır.
  • Kayıtlı Eylem Seçici alınır.
  • Kayıtlı eylem seçicinin SelectAction yöntemi çağrılır. Yalnızca bir eylem yöntemi eşleştirilirse, boru hattı devam eder.
  • Seçilen eylemin kayıtlı tüm filtreleri alınır.
  • Yetkilendirme Filtreleri çağrılmaktadır. Yetkilendirme filtresi, boru hattının devam etmesine veya boru hattını sonlandırmasına izin verebilir.
  • Yetkilendirme Filtreleri isteğini sonlandırmadıysa, işlem parametre bağlamaları gerçekleştirilir.
  • ApiController.ModelState yüklendi.
  • Eylem Filtreler çalıştırılır. Eylem Filtreleri, boru hattının boru hattının yürütülmesine veya sonlandırılmasına devam etmesine izin verebilir.
  • Eylem Filtreleri isteği sonlandırmadıysa, kayıtlı Eylem Çağrısı alındı.
  • Kayıtlı Action Invoker'ın InvokeActionAsync yöntemiyle seçilen eylem yöntemi çağrılır.
  • Not: Yetkilendirme Filtrelerinin yürütülmesinden eylem yönteminin yürütülmesinden herhangi bir istisna meydana gelirse, istisna filtreleri çağrılır.

Arada gerçekleşen birkaç şey daha var, ancak bu tam bir görünüme çok yakın. Daha fazla bilgi için ApiController source code'a bakın.

+3

ve Bu nedenle OperationHandlers gerçekten çok iyi. Ne dağınıklık. –

+0

Google'da OperationHandlers'ı buldum, ancak özel OperationHandler'imi nasıl kaydedemiyorum ... – user437899

+1

BTW: Yetkilendirme Filtreleri, genel "normal" filtrelerden önce çağrılır. – user437899

İlgili konular