gpt4 book ai didi

c# - 如何从 IOwinContext 获取 HttpRequestBase

转载 作者:行者123 更新时间:2023-11-30 17:43:52 24 4
gpt4 key购买 nike

我开始为我的 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 变量返回 null,我不知道出了什么问题。

有人知道如何使用 Owin 获取 HttpRequestBase 吗?

最佳答案

我猜您一定是在为您的 webApi 使用 System.web 托管,这就是您的测试运行的原因。现在,由于您已经开始使用托管 HttpContext 的 OwinSelf,图片中不再存在。这就是你变得空的原因。

这就是我们有扩展方法从 HttpContext/Requests 获取 OwinContext 但没有扩展方法从 OwinContext 获取 HttpContext 的原因。

很遗憾,您必须删除/更改上述自托管测试。

关于c# - 如何从 IOwinContext 获取 HttpRequestBase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30358113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com