如何在旧的ASP.NET Web表单应用程序和新的ASP.NET核心应用程序中使用HttpContext

时间:2019-02-01 20:50:50

标签: asp.net-core .net-core .net-standard httpcontext

我正在将所有共享类库从.NET Framework转换为.NET Standard,以便我们的旧版.NET Framework和新的.NET Core应用程序都可以使用它们。目标是将我们所有的应用程序都添加到.NET Core,但这是一个大型系统,因此需要时间,因此我们需要两个世界同时并存一年左右。

痛苦点之一是共享类库代码广泛利用HttpContext。我知道从类库中访问它的新.NET Core方法是使用AddHttpContextAccessor。但是,我们仍然有旧的ASP.NET Web表单应用程序和新的ASP.NET Core Web应用程序,它们都需要调用此通用代码。如果我转为使用带有DI的HttpContextAccessor,那么它将无法在旧的ASP.NET Web窗体应用程序中使用,因为它不知道HttpContextAccessor是什么。

我想知道我的选择在这里...有没有办法设置HttpContext的访问权限,使其可以在ASP.NET Web窗体和ASP.NET Core中使用?

1 个答案:

答案 0 :(得分:1)

我认为新旧应用程序之间必须具有一些通用接口。

创建一个新的IMyHttpContext并将该类型注入新旧版本。使用您的DI基础结构实例化一个用于访问旧应用程序的新MyClassForOld: IMyHttpContext的新HttpContext,并使用您的DI实例化另一个访问HttpContextAccessor的基础引用的新MyClassForNew: IMyHttpContent