有没有办法将OwinRequest转换为HttpRequestBase?

问题描述:

我在写一篇Owin Middleware,我需要使用一些遗留代码,它使用HttpRequestBase作为方法参数。遗留代码不遵循SOLID,所以不可能将其扩展为使用OwinRequest而不是HttpRequestBase有没有办法将OwinRequest转换为HttpRequestBase?

是否存在将OwinRequest转换为HttpRequestBase的扩展(或方式)?

如果你有访问请求的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