2014-10-27 48 views
8

我在寫一篇Owin Middleware,我需要使用一些遺留代碼,它使用HttpRequestBase作爲方法參數。遺留代碼不遵循SOLID,所以不可能將其擴展爲使用OwinRequest而不是HttpRequestBase有沒有辦法將OwinRequest轉換爲HttpRequestBase?

是否存在將OwinRequest轉換爲HttpRequestBase的擴展(或方式)?

回答

13

如果你有訪問請求的IOwinContext,你可以用這個小黑客獲得HttpContextBase

HttpContextBase httpContext = context.Get<HttpContextBase>(typeof(HttpContextBase).FullName); 

然後,你只想:我

HttpRequestBase httpRequest = httpContext.Request; 
+0

不擁有IOwinContext。我有意編寫不從OwinMiddleware繼承的中間件。有什麼辦法從IDictionary 創建一個IOwinContext? – Maciek 2014-10-27 16:45:07

+1

由於OwinContext c-tor接受IDictionary 參數並且可以從Owin環境輕鬆創建,因此接受此答案作爲答案。 :)謝謝Mati。 – Maciek 2014-10-28 08:38:34

相關問題