将复杂的 Web 应用程序从 .NET 4.7.2 迁移到 .NET 6

问题描述 投票:0回答:1

我有一个在 .NET 4.7.2 上运行的可用 Web 应用程序,我需要将其迁移到 .NET 6.0。在更改 .NET Core 管理 Http 库和网络的方式时,我遇到了许多问题。

特别是我无法翻译如下代码:

protected  bool AuthorizeCore(HttpContext httpContext) 
{
    if (Config.Instance.Test)
         return true;

    var context = httpContext.ApplicationInstance.Context;
    var roles = httpContext.Request?.ServerVariables["HTTP_COMPANY_ROLES"];
    return IsAuthenticate(roles);
}

特别是,在前面的代码片段中,我无法实现如何从

ApplicationInstance
获取
HttpContext
以及如何从当前 http 请求访问
ServerVariables
数组,因为这些属性未定义(错误 CS1061)在我当前的项目参考和程序集参考中。

任何人都可以给我关于如何解决这些问题的建议吗?

另一个问题是:在 .NET Core 中,

HttContext
HttContextBase
之间存在差异,我应该考虑到吗?

提前致谢。

c# visual-studio asp.net-core asp.net-web-api migration
1个回答
0
投票

ASP.NET Core 中没有 HttpContextBaseHttpContext 已经是一个抽象类,在 DefaultHttpContext 中实现(参见 GitHub)。

HttpRequest 没有 ServerVariables 属性。您可以使用

HttpContext.Request?.Headers
来获取这些 Properties

您可以使用 session 来获取或设置用于管理此请求的用户会话数据的对象:

HttpContext.Session.SetString("HTTP_COMPANY_ROLES", "aa");

var v1=HttpContext.Session.GetString("HTTP_COMPANY_ROLES");

此外,您可以阅读在 ASP.NET Core 中访问 HttpContext 了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.