2014-01-28 72 views
6

我正在開發用於授權的Web API解決方案,我們使用繼承自AuthorizeAttribute的BasicHttpAuthorizeAttribute類修飾了每個控制器操作方法。WEB API OnAuthorization被稱爲兩次

public class BasicHttpAuthorizeAttribute : System.Web.Http.AuthorizeAttribute

對於每一個請求,我看到OnAuthorization方法被調用了兩次。當我檢查調用堆棧時,所有請求都由相同的線程/進程ID進行。我正在使用UnityContainer。我通過Custom Authorize在WebApiConfig.cs中註冊請讓我知道調用兩次的原因。

+0

您是否有任何預檢CORS請求? – zapoo

+0

你有沒有解決這個問題?有一個非常類似的問題。 – DevEng

回答

0

如果您在webapiconfig.cs中註冊過濾器,它將針對每個傳入請求運行。 如果您使用篩選器修飾動作,它將針對該動作運行。 由於您註冊了過濾器並對動作進行了裝飾,因此它將運行兩次。

+0

好吧,我遇到了同樣的問題,我的過濾器僅用於裝飾動作。沒有在我的webapiconfig.cs註冊,所以我不確定.... –

+0

對不起,我需要更多信息。它只是裝飾行動,還是控制器呢?你有什麼樣的繼承(用於控制器或過濾器)?什麼樣的過濾器(授權,認證,行動)? –

+1

這只是行動。但我發現一些帖子建議覆蓋AllowMultiple屬性返回false,這對我有效。 –