我有一個WebAPI服務使用ADFS(對於問題不重要,但它是Microsoft的Active Directory身份驗證服務)。C#WebAPI頂部消息處理
用戶向服務器發送請求,並且由於未經過身份驗證,他將被重定向到ADFS的登錄頁面。下次他向服務器發送一個請求時,他會發送一個驗證cookie,這將允許他跳過ADFS登錄頁面。
服務正在被不同的域(CORS)訪問,但我已經解決了這個問題。 GET請求很容易處理。
我的問題是OPTIONS請求,因爲我的服務是在不同的域上,然後是網站的域名。 OPTIONS請求在每個POST請求之前發送。所有OPTIONS請求都不包含cookie,因此請求被重定向到ADFS登錄頁面。
我想創建一個甚至在ADFS之前執行的消息處理程序,就像一個消息處理程序,它將成爲第一個將運行消息的代碼,以便檢查請求的方法是否爲OPTIONS(in這種情況下,我會簡單地返回響應)
我試圖用我的消息中找到一個例子處理,但它正在太晚執行時,ADFS」消息處理程序是它上面
public class MessageHandler2 : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
// Create the response.
var response = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent("Hello!")
};
// Note: TaskCompletionSource creates a task that does not contain a delegate.
var tsc = new TaskCompletionSource<HttpResponseMessage>();
tsc.SetResult(response); // Also sets the task state to "RanToCompletion"
return tsc.Task;
}
}
有誰知道路怎麼我是否可以儘可能高地處理消息?也許即使沒有消息處理程序
看看這個教程關於委託處理程序http://www.asp.net/web-api/overview/advanced/http-message-handlers – Nkosi