我的OWIN中間件就是這樣。 (框架是ASP.NET Web API)。從OWIN中間件更改響應對象
public class MyMiddleware : OwinMiddleware
{
public MyMiddleware(OwinMiddleware next) : base(next) { }
public override async Task Invoke(OwinRequest request, OwinResponse response)
{
var header = request.GetHeader("X-Whatever-Header");
await Next.Invoke(request, response);
response.SetHeader("X-MyResponse-Header", "Some Value");
response.StatusCode = 403;
}
}
問題:
它是推薦的做法從
OwinMiddleware
派生?我看到在Katana源文件中,一些中間件類從OwinMiddleware
派生,有些則不派生。我可以看到請求標頭沒關係。在我的中間件中設置
Next.Invoke
之後設置響應標頭或狀態碼對返回給客戶端的響應沒有影響。但是,如果我在Next.Invoke
調用之前設置響應標頭或狀態,則將包含標題和我設置的狀態的響應返回給客戶端。什麼是設置這些的正確方法?
謝謝優素福。對於第二點,從最佳實踐角度來看,Katana來源或其他地方有沒有示例代碼?我相信,我所要求的是一個相當普遍的需求,如果我們使用OWIN中間件,每個人都應該做這個流切換來設置一個響應頭文件?任何指針將不勝感激。 – Badri
我可以按照你的建議來解決問題,但不是一個簡單的方法嗎?我的意思是這樣做太多了,只需在出口設置響應頭,特別是如果使用Web API的消息處理程序。 – Badri
用更簡單的方法更新了答案。請讓我知道它是否有效。 –