自学内容网 自学内容网

.netframeworke4.6.2升级.net8问题处理

后端迁移注意事项

文件上传部分 Request.Files替换为Request.Form.Files

旧:

Request.Files
Request.Form.Files.AllKeys[i]
Request.Form.Files[i].InputStream

新:

Request.Form.Files
Request.Form.Files[i].Name
Request.Form.Files[i].OpenReadStream()

Get请求返回问题

旧:

return Json(rst, JsonRequestBehavior.AllowGet);

新:

return Json(rst);

获取完整的请求路径Request.Url.AbsoluteUri 和获取当前请求的主机Request.Url.Host

旧:

Request.Url.AbsoluteUri
Request.Url.Host
Request.Url.LocalPath
Request.InputStream
Request.Url.Scheme
Request.Url.Authority

新:

Request.GetDisplayUrl()
Request.Host.Value
HttpContext.Request.Path
HttpContext.Request.Body
Request.Scheme
Request.Host.Value

获取远程客户端的 IP 主机地址

旧:

Request.UserHostAddress

新:

HttpContext.Connection.RemoteIpAddress

SetSession赋值,取值方式

旧:

Session["UserSchMsg"] = null;
Session["UserSchMsg"]
Session.SessionID

新:

HttpContext.Session.Remove("UserSchMsg");
HttpContext.Session.GetString("UserSchMsg")
HttpContext.Session.Id

清除session

旧:

System.Web.HttpContext.Current.Session.RemoveAll();

新:

HttpContext.Session.Clear();

设置缓存

旧:

ServiceManager.GetService<ICacheProvider>().GetCache().Set(key, Session.SessionID, DateTimeOffset.Now.AddDays(1));

新:

ServiceManager.GetService<ICacheProvider>().SetCache(key, HttpContext.Session.Id, TimeSpan.FromDays(1));

获取缓存数据

旧:

var cache = ServiceManager.GetService<ICacheProvider>().GetCache();
var tmpList = cache.Get(CacheKeys.MenuItem) as List<MenuItem>;

新:

var cache = ServiceManager.GetService<ICacheProvider>();
var tmpList = cache.GetCache<List<MenuItem>>(CacheKeys.MenuItem);

生成二维码【升级后】

/// <summary>
/// 生成二维码
/// </summary>
/// <param name="content">内容</param>
/// <returns></returns>
public static byte[] CreateQRCode(string content, int bl = 5)
{
    QRCodeGenerator qrGenerator = new QRCodeGenerator();
    QRCodeData qrCodeData = qrGenerator.CreateQrCode(content, QRCodeGenerator.ECCLevel.Q);
    QRCode qrcode = new QRCode(qrCodeData);

    Bitmap qrCodeImage = qrcode.GetGraphic(bl, Color.Black, Color.White, null, 15, 6, false);
    MemoryStream ms = new MemoryStream();
    qrCodeImage.Save(ms, ImageFormat.Jpeg);
    return ms.ToArray();
}

新:

/// <summary>
/// 生成二维码
/// </summary>
/// <param name="content">内容</param>
/// <returns></returns>
public static byte[] CreateQRCode(string content, int bl = 5)
{
    QRCodeGenerator qrGenerator = new QRCodeGenerator();
    QRCodeData qrCodeData = qrGenerator.CreateQrCode(content, QRCodeGenerator.ECCLevel.Q);
    byte[] qrCodeImage = [];
    using (PngByteQRCode qrCode = new PngByteQRCode(qrCodeData))
    {
        qrCodeImage = qrCode.GetGraphic(bl, Color.Black, Color.White);
    }
    return qrCodeImage;
}

EFCore返回Json数据首字母变成了小写解决方案

Program.cs

// 添加服务到容器
builder.Services.AddControllersWithViews((option) =>
{
    option.Filters.Add(typeof(MemberShipFilterAttribute));
})
    .AddApplicationPart(typeof(WgController).Assembly)  // 注册外部类库中的控制器
    .AddControllersAsServices()// 将控制器作为服务添加到 DI 容器中
    .AddJsonOptions(options =>
    {
        // 设置为 PascalCase,保留属性首字母大写
        options.JsonSerializerOptions.PropertyNamingPolicy = null;
    });  

获取服务端地址

旧:

@Url.GetURL

新:

@Url.Action

Server.UrlEncode

旧:

callBack = Server.UrlEncode($"{RequestHost}/rightframe/home/wxcallback"),

新:

callBack = WebUtility.UrlEncode($"{RequestHost}/rightframe/home/wxcallback")

CoreDbContext

旧:

using (var dbContext = new CoreDbContext())
 {
 }

新:

private readonly DbContextOptions<CoreDbContext> options = null;
/// <summary>
/// 构造函数
/// </summary>
public MatService(DbContextOptions<CoreDbContext> _options)
{
    options = _options;
}
//用到的地方
using (var dbContext = new CoreDbContext(options))
 {
 }

HostingEnvironment.MapPath

旧:

HostingEnvironment.MapPath("~/")

新:

using Microsoft.AspNetCore.Hosting;
using System.IO;

private readonly IWebHostEnvironment _webHostEnvironment;

public YourClassName(IWebHostEnvironment webHostEnvironment)
{
    _webHostEnvironment = webHostEnvironment;
}

public string GetVideoThumbnailPath()
{
    // 获取应用程序的根目录
    string rootPath = _webHostEnvironment.ContentRootPath;

    // 构建 TempFiles\VideoThumbnail\ 路径
    string url = Path.Combine(rootPath, "TempFiles", "VideoThumbnail");
    return url;
}

获取UrlHelper语法变化

旧:

var urlHelper = new UrlHelper(Request.RequestContext);
var url = urlHelper.ImageUrl(pic.Pic.ToString(), 1024).ToString();

新:

var url = Url.ImageUrl(pic.Pic.ToString(), 1024).ToString();

RequestUri.Host

旧:

var key = Request.RequestUri.Host + "@" + SessionId;

新:

var key = $"{HttpContext.Request.Host.Value}@{SessionId}";

Execl导入StreamToLists根据读取流的语法变更。

旧:

  /// <summary>
        /// 导入摄像头(第三方)  Excel
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public JsonResult Channel_ImportFile()
        {
            if (Request.Files["ChannelFile"] != null)
            {
                ExcelToList<ThirdImport> iExcelToList = new ExcelToList<ThirdImport>();
                var list = iExcelToList.StreamToLists(Request.Files["ChannelFile"].InputStream);
                if (list.Count > 0)
                {
                    list.RemoveAt(0);
                }
                return Json(new Page
                {
                    rows = list,
                    total = list.Count
                });
            }
            return Json(new Page
            {
                rows = new List<object>(),
                total = 0
            });
        }

新:

  /// <summary>
        /// 导入摄像头(第三方)  Excel
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public JsonResult Channel_ImportFile([FromForm] IFormFile channelFile)
        {
            if (channelFile != null)
            {
                ExcelToList<ThirdImport> iExcelToList = new ExcelToList<ThirdImport>();
                var list = new List<ThirdImport>();
                try
                {
                    using (var stream = channelFile.OpenReadStream())
                    {
                        list = iExcelToList.StreamToLists(stream);
                    }
                    if (list.Count > 0)
                    {
                        list.RemoveAt(0);   // 移除 Excel 中的第一行(可能是表头)
                    }
                }
                catch (Exception)
                {
                    return Json(new Page
                    {
                        rows = new List<object>(),
                        total = 0
                    });
                }
                return Json(new Page
                {
                    rows = list,
                    total = list.Count
                });
            }
            return Json(new Page
            {
                rows = new List<object>(),
                total = 0
            });
        }

return HttpNotFound()

旧:

return HttpNotFound();

新:

return NotFound();

前端迁移注意事项

前端模型

旧:

@using WingSoft.Web.Core;
@using WingSoft.Core;
@using Newtonsoft.Json;
@model List<MenuGroupItem>

新:

@inherits WingSoft.Web.Core.RazorBase<List<MenuGroupItem>>
@model List<MenuGroupItem>

前端文件版本号

旧:

<script src="~/Scripts/Mysafe.Core.js?v=@UiVersion"></script>

新:

<script src="~/Scripts/Mysafe.Core.js" asp-append-version="true"></script>

string rawJson = await new System.IO.StreamReader(Request.InputStream).ReadToEndAsync()

旧:

string rawJson = await new System.IO.StreamReader(Request.InputStream).ReadToEndAsync()

新:

  string rawJson;
  using (var reader = new StreamReader(Request.Body, Encoding.UTF8, leaveOpen: true))
  {
      rawJson = await reader.ReadToEndAsync();
  }

MvcHtmlString

旧:

public List<MvcHtmlString> AssetPics { get; set; } 

新:

 public List<HtmlString> AssetPics { get; set; } 

原文地址:https://blog.csdn.net/honeycandys/article/details/145285320

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!