首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在ASP.NET内核中获取HttpContext.Current?

如何在ASP.NET内核中获取HttpContext.Current?
EN

Stack Overflow用户
提问于 2016-07-25 22:53:16
回答 1查看 332.8K关注 0票数 255

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

有一节我们在类库中使用HttpContext来检查当前状态。如何在.NET Core1.0中访问HttpContext.Current

代码语言:javascript
复制
 var current = HttpContext.Current;
     if (current == null)
      {
       // do something here
       // string connection = Configuration.GetConnectionString("MyDb");
      }

为了构造当前的应用程序主机,我需要访问它。

代码语言:javascript
复制
$"{current.Request.Url.Scheme}://{current.Request.Url.Host}{(current.Request.Url.Port == 80 ? "" : ":" + current.Request.Url.Port)}";
EN

回答 1

Stack Overflow用户

发布于 2016-09-19 18:28:52

如果您确实需要对当前上下文进行静态访问,那么有一个解决方案。在Startup.Configure中(…。)

代码语言:javascript
复制
app.Use(async (httpContext, next) =>
{
    CallContext.LogicalSetData("CurrentContextKey", httpContext);
    try
    {
        await next();
    }
    finally
    {
        CallContext.FreeNamedDataSlot("CurrentContextKey");
    }
});

当你需要它的时候,你可以用以下命令获得它:

代码语言:javascript
复制
HttpContext context = CallContext.LogicalGetData("CurrentContextKey") as HttpContext;

我希望这能有所帮助。请记住,这种变通方法是在您别无选择时使用的。最佳实践是使用去依赖注入。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38571032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档