如何从 IOwinContext 获取 HttpRequestBase
How to get HttpRequestBase from IOwinContext
我开始为我的 API 使用 Owin 自托管,现在我正在尝试修复一些测试,这些测试开始失败,因为 Owin 不支持 HttpContext.Current
现在我无法从 IOwinContext
获取 HttpRequestBase
。这是我在 Owin 之前使用的旧代码:
public static HttpRequestBase GetRequestBase(this HttpRequestMessage request)
{
return ((HttpContextWrapper)request.Properties["MS_HttpContext"]).Request;
}
这是我基于 this answer:
的尝试
public static HttpRequestBase GetRequestBase(this HttpRequestMessage request)
{
var context = request.GetOwinContext();
HttpContextBase httpContext = context.Get<HttpContextBase>(typeof(HttpContextBase).FullName); // <---- Returns null
return httpContext.Request;
}
问题是 httpContext
变量 returns null
我不知道出了什么问题。
有人知道如何使用 Owin 获取 HttpRequestBase 吗?
我猜你一定是在为你的 webApi 使用 System.web 托管,这就是你的测试 运行 的原因。现在,由于您已经开始使用托管 HttpContext 的 OwinSelf,图片中不再存在。这就是你变得空的原因。
这就是我们有从 HttpContext/Requests 获取 OwinContext 的扩展方法但没有从 OwinContext 获取 HttpContext 的扩展方法的原因。
很遗憾,您必须 remove/change 进行上述自托管测试。
我开始为我的 API 使用 Owin 自托管,现在我正在尝试修复一些测试,这些测试开始失败,因为 Owin 不支持 HttpContext.Current
现在我无法从 IOwinContext
获取 HttpRequestBase
。这是我在 Owin 之前使用的旧代码:
public static HttpRequestBase GetRequestBase(this HttpRequestMessage request)
{
return ((HttpContextWrapper)request.Properties["MS_HttpContext"]).Request;
}
这是我基于 this answer:
的尝试public static HttpRequestBase GetRequestBase(this HttpRequestMessage request)
{
var context = request.GetOwinContext();
HttpContextBase httpContext = context.Get<HttpContextBase>(typeof(HttpContextBase).FullName); // <---- Returns null
return httpContext.Request;
}
问题是 httpContext
变量 returns null
我不知道出了什么问题。
有人知道如何使用 Owin 获取 HttpRequestBase 吗?
我猜你一定是在为你的 webApi 使用 System.web 托管,这就是你的测试 运行 的原因。现在,由于您已经开始使用托管 HttpContext 的 OwinSelf,图片中不再存在。这就是你变得空的原因。
这就是我们有从 HttpContext/Requests 获取 OwinContext 的扩展方法但没有从 OwinContext 获取 HttpContext 的扩展方法的原因。
很遗憾,您必须 remove/change 进行上述自托管测试。