2014-01-16 90 views
2
採取行動的過濾器

你知道MVC和Web API操作篩選使用不同的命名空間爲他們的過濾器:兩個MVC和網絡API控制器

在網頁API

public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)

HttpActionExecutedContext是system.web.http.filters

在MVC

public override void OnActionExecuted(ActionExecutedContext actionExecutedContext) 

ActionExecutedContext是在​​

我想有一個過濾器爲所有我的控制器,無論何時web api或MVC。

那麼我該如何解決這個問題?

回答

1

MVC和Web API是不同的框架,它們匯聚的地方是主機部分。此時,MVC和Web API可以通過網絡託管(IIS + ASP.NET管道),因此您可以編寫IIS模塊來執行您想要的操作。

OWIN中間件可能是一個更好的選擇,但不幸的是,在這一點上MVC不能被OWIN託管。但是,您可以使用階段標記在您想要的階段在ASP.NET管道中運行OWIN中間件,但據我所知,PipelineStage枚舉的最後階段爲PreHandlerExecute。這意味着你可以做類似OnActionExecuting但不是OnActionExecuted

+0

感謝您的回答,你的意思是我應該有一個MVC控制器和另一個Web API的動作過濾器?我goolgled,並沒有看到任何相關的問題和答案。我想也許我的問題是不正確的! –

+0

我正在開發一個Web應用程序。它需要一個web API。那麼最好的方法是,讓一個web應用程序同時實現mvc應用程序和web api,或者一個web應用程序用於mvc,另一個用於webapi? –