【问题标题】:Package 'Microsoft.AspNet.Mvc 5.2.7' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7,使用 '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, 恢复包 'Microsoft.AspNet.Mvc 5.2.7',
【发布时间】:2022-01-15 11:49:57
【问题描述】:

我想从我的 ASP.NET Framework MVC 项目(.NET Framework 4.7) 迁移到 ASP.NET Core MVC 项目(.NET 5.0)。在解决方案中有一些类库。 在其中一个类库中有以下类:

namespace Framework
{
    public class AtisunAuthorize : AuthorizeAttribute
    {
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            var integratedAuthentication = this.GetAppSetting<bool>("IntegratedAuthentication");
            if (!integratedAuthentication)
            {
                base.HandleUnauthorizedRequest(filterContext);
                return;
            }
            var loginUrl = this.GetAppSetting<string>("UMSLogInUrl");
            if(string.IsNullOrWhiteSpace(loginUrl))
            {
                throw new AtiSunException("");
            }
            var returnUrl = HttpUtility.UrlEncode(filterContext.HttpContext.Request.Url.AbsoluteUri);
            filterContext.Result = new RedirectResult(loginUrl + "?ReturnUrl=" + returnUrl);
        }
    }
}

我从 nuget 安装“System.Web.Mvc”,然后我发现以下警告和错误:

1- 警告:

使用 '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version= 恢复包“Microsoft.AspNet.Mvc 5.2.7” v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' 而不是项目目标框架'net5.0'。此软件包可能与您的项目不完全兼容。

2- 以下行错误:

var returnUrl = HttpUtility.UrlEncode(filterContext.HttpContext.Request.Url.AbsoluteUri);

我该如何解决这个问题?如有任何帮助,我们将不胜感激。

【问题讨论】:

    标签: c# asp.net asp.net-core


    【解决方案1】:

    第二个问题出现错误,因为 AuthorizationContext HttpContext. Request. Url. AbsoluteUri 未读取。


    路线原因及建议:

    你需要重写HandleUnauthorizedRequest方法,因为.net Core和.NET Framework项目结构不同,你的.net Core项目实现是通过中间件编码的。

    1.在.net框架中,通常我们可以在Global.asax中添加一些方法来实现我们想要的一些功能。

    2.但是在.net core中,我们需要使用中间件来实现。

    1. Customize the behavior of AuthorizationMiddleware

    2. ASP.NET Core middleware and authorization

    3. Adding your own Custom Authorize Attribute to Asp. Net Core 2.2 and above

    【讨论】:

      猜你喜欢
      • 2019-10-09
      • 2018-05-28
      • 1970-01-01
      • 2018-06-07
      • 2018-06-20
      • 2018-10-21
      • 2019-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多