gpt4 book ai didi

asp.net - 在自主机模式下获取当前的 owin 上下文

转载 作者:行者123 更新时间:2023-12-04 00:49:53 26 4
gpt4 key购买 nike

我需要运行我的应用程序,它在 IIS 和 .NET CLR 自主机模式上提供一些 ASP.NET Web API 服务。
我基于 OWIN 开发了我的 ASP.NET Web API 服务,它在两个主机上都运行良好。
现在我需要这样的东西:

public class OwinContextInfrastructure
{
public static IOwinContext Current
{
get
{
if (HttpContext.Current != null)
{
return HttpContext.Current.GetOwinContext();
}
else
{
// What should I do here ?
return null;
}
}
}
}

在我的应用程序中需要时获取当前的 owin 上下文。

我的代码在 IIS 上运行良好,但是在 .NET Self Host 模式下我应该怎么做?

最佳答案

您可以使用 Request.GetOwinContext()用于网络托管和自托管。 GetOwinContextHttpRequestMessage 的扩展方法并在 System.Web.Http.Owin.dll 程序集中定义。

更新

我已经回答了您最初的问题,即如何在网络托管和自托管中获取 OWIN 上下文。现在,通过您在评论中的附加问题,您大大拓宽了问题的范围。但是有一个根本性的问题。 IOwinContext不是 OWIN 的东西,它是 Katana 的东西。您不能期望 OWIN 上托管的任何框架以 IOwinContext 的形式提供上下文。 . ASP.NET Web API 确实如此,但并非每个框架都应该如此。 IOwinContext是对 OWIN 环境字典的抽象,该字典可用于任何 OWIN 中间件。但是,通过在框架之上工作,您不能再直接访问 OWIN 环境,而只能通过该特定框架决定公开上下文的方式。

对于 Nancy,您必须使用 NancyContext前往 Items字典并查找与键“OWIN_REQUEST_ENVIRONMENT”对应的值。对于 SignalR,Environment IRequest 的属性(property)使您可以访问 OWIN 环境。一旦你有了 OWIN 环境,你就可以创建一个新的 OwinContext使用环境。

关于asp.net - 在自主机模式下获取当前的 owin 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26201032/

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