猿问

如何在ASP.NET Core中获取HttpContext.Current?

如何在ASP.NET Core中获取HttpContext.Current?

我们目前正在使用ASP.NET Core重写/转换我们的ASP.NET WebForms应用程序。尽量避免重新设计。

我们HttpContext在类库中使用了一个部分来检查当前状态。如何HttpContext.Current在.NET Core 1.0中访问?

 var current = HttpContext.Current;
     if (current == null)
      {
       // do something here
       // string connection = Configuration.GetConnectionString("MyDb");
      }

我需要访问它才能构建当前的应用程序主机。

$"{current.Request.Url.Scheme}://{current.Request.Url.Host}{(current.Request.Url.Port == 80 ? "" : ":" + current.Request.Url.Port)}";


婷婷同学_
浏览 5901回答 3
3回答

largeQ

如果您确实需要对当前上下文的静态访问,则可以使用此解决方案。在Startup.Configure(...)中app.Use(async (httpContext, next) =>{     CallContext.LogicalSetData("CurrentContextKey", httpContext);     try     {         await next();     }     finally     {         CallContext.FreeNamedDataSlot("CurrentContextKey");     }});当你需要它时,你可以得到它:HttpContext context = CallContext.LogicalGetData("CurrentContextKey") as HttpContext;我希望有所帮助。请记住,当您无法选择时,此解决方法。最佳实践是使用de依赖注入。
随时随地看视频慕课网APP
我要回答