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

news/2025/1/22 16:19:53/

后端迁移注意事项

文件上传部分 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; } 

http://www.ppmy.cn/news/1565254.html

相关文章

Oracle环境搭建

在实际的工作场景中进场接触的数据库类型&#xff1a;Oracle&#xff0c;今天决定自己代建一个自己的Oracle数据库&#xff0c;做学习用。安装过程还算顺利。在配置远程登录的过程中遇到了低版本客户端登录高版本客户端&#xff0c;密码和连接串配置的问题问题。 下载客户端 1…

学习第七十四行

qt调用信号与槽机制&#xff1a; MOC查找头文件中的signal与slots&#xff0c;标记出信号槽。将信号槽信息储存到类静态变量staticMetaObject中&#xff0c;并按照声明的顺序进行存放&#xff0c;建立索引。connect链接&#xff0c;将信号槽的索引信息放到一个双向链表中&…

【威联通】FTP服务提示:服务器回应不可路由的地址。被动模式失败。

FTP服务器提示&#xff1a;服务器回应不可路由的地址。被动模式失败。 问题原因网络结构安全管理配置服务器配置网关![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1500d9c0801247ec8c89db7a44907e4f.png) 问题 FTP服务器提示&#xff1a;服务器回应不可路由的地址…

docker 与K8s的恩怨情仇

Docker 和 Kubernetes&#xff08;通常简称为 K8s&#xff09;是容器化和容器编排领域的两大重要工具&#xff0c;它们在技术生态中扮演着不同的角色&#xff0c;并且有着密切的关系。虽然有时候人们会讨论它们之间的关系&#xff0c;但实际上它们更多的是互补而不是对立。下面…

SSM项目本地Tomcat部署

目录 1、打包 2、部署在本地Tomcat上 3、运行tomcat&#xff08;startup&#xff09; 1、打包 在生命周期中&#xff0c;完成打包。 注意&#xff1a;打包时会测试&#xff0c;测试时可能会测试根据id删除。第二次的测试就会出错&#xff0c;导致打包失败。 从target目录下…

Golang的图形编程应用案例分析与技术深入

Golang的图形编程应用案例分析与技术深入 一、Golang在图形编程中的应用介绍 作为一种高效、简洁的编程语言&#xff0c;近年来在图形编程领域也逐渐展露头角。其并发性能优势和丰富的标准库使得它成为了一个越来越受欢迎的选择。 与传统的图形编程语言相比&#xff0c;Golang具…

STM32 硬件I2C读写

单片机学习&#xff01; 目录 前言 一、步骤 二、配置I2C外设 2.1 开启I2C外设和GPIO口时钟 2.2 GPIO口初始化为复用开漏模式 2.3 结构体配置I2C 2.4 使能I2C 2.5 配置I2C外设总代码 三、指定地址写时序 3.1 生产起始条件S 3.2 监测EV5事件 3.3 发送从机地址 3.4 …

Linux内核编程(二十一)USB驱动开发-键盘驱动

一、驱动类型 USB 驱动开发主要分为两种&#xff1a;主机侧的驱动程序和设备侧的驱动程序。一般我们编写的都是主机侧的USB驱动程序。 主机侧驱动程序用于控制插入到主机中的 USB 设备&#xff0c;而设备侧驱动程序则负责控制 USB 设备如何与主机通信。由于设备侧驱动程序通常与…