【发布时间】:2023-03-08 15:10:01
【问题描述】:
我已将几个 ASP.Net Core 2.2 项目迁移到 .Net 5,我遇到的最后一个问题是尝试从项目资源加载位图时出现 System.NotSupported 异常。
RtfUtility.AppendLogo(result, Properties.Resources.Logo);
System.NotSupportedException H结果=0x80131515 Message=BinaryFormatter 序列化和反序列化在此应用程序中被禁用。请参阅https://aka.ms/binaryformatter 了解更多信息。 Source=System.Runtime.Serialization.Formatters
我没有明确使用 BinaryFormatter,但奇怪的是,我在以相同方式加载二进制 PDF 文件时没有收到错误:
processor.LoadDocument(new MemoryStream(Properties.Resources.Certificate));
这两种机制都使用 ResourceManager.GetObject,所以我不确定发生了什么。我知道我可以关闭项目文件中的错误,但这似乎是一个短期解决方案,我宁愿修复它并忘记它。感谢您提供的任何建议...
编辑:
堆栈跟踪如下,错误不是库引起的,是访问资源时引起的。它在图像被嵌入或链接时发生 - 似乎没有区别,但不会发生在(二进制)PDF文件中。
感谢您查看此内容...
在 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream) 在 System.Resources.ResourceReader.c__DisplayClass7_0`1.b__0(对象 obj,流流) 在 System.Resources.ResourceReader.DeserializeObject(Int32 typeIndex) 在 System.Resources.ResourceReader._LoadObjectV2(Int32 pos,ResourceTypeCode& typeCode) 在 System.Resources.ResourceReader.LoadObjectV2(Int32 pos,ResourceTypeCode& typeCode) 在 System.Resources.ResourceReader.LoadObject(Int32 pos, ResourceTypeCode& typeCode) 在 System.Resources.RuntimeResourceSet.GetObject(字符串键,布尔忽略大小写,布尔 isString) 在 System.Resources.RuntimeResourceSet.GetObject(字符串键,布尔忽略大小写) 在 System.Resources.ResourceManager.GetObject(字符串名称,CultureInfo 文化,布尔值 wrapUnmanagedMemStream) 在 System.Resources.ResourceManager.GetObject(字符串名称,CultureInfo 文化) 在 C:\Development\Project\Project.Infrastructure\Properties\Resources.Designer.cs:line 227 中的 Project.Infrastructure.Properties.Resources.get_Logo() 在 C:\Development\Project\Project.Infrastructure\Models\ShowWording.cs:line 146 中的 Project.Infrastructure.Models.ShowWording.Generate() 处
【问题讨论】:
-
位图资源是嵌入式资源还是链接到文件?
-
添加完整的堆栈跟踪可能会有所帮助
-
从参考源抛出异常的行。 referencesource.microsoft.com/#mscorlib/system/resources/… 。 PDF 可能属于开关中的
ByteArray或Stream处理,而图像属于“用户类型”,如果FEATURE_SERIALIZATION关闭,则始终会引发异常。它实际上并没有尝试反序列化类型,它只是说该功能已被禁用。图片可能不应该使用用户类型。 -
您能发布 Resources.resx 文件的内容吗?或者创建一个新的 .NET 5 项目,添加位图资源并比较文件。应该有一些差异,但是我没有旧项目中的这样的resources.resx。
标签: c# asp.net .net binaryformatter