.NET Framework 4.8下IIS服务库中MimeKit 3.x系列异常求助
.NET Framework 4.8下MimeKit在IIS服务库中的异常问题排查
环境说明
- 开发环境:Win10 + Visual Studio 2022 x64
- 测试环境:Windows Server 2019 + IIS 10.0(17763.1)
- 目标程序:运行于IIS的服务库 + Windows Form测试程序,均基于.NET Framework 4.8开发
问题1:MimeKit 3.3.0在IIS服务库中初始化MimeMessage失败
执行MimeMessage result = new MimeMessage();时抛出异常:
'MimeKit.ParserOptions'的类型初始值设定项引发异常。内部异常:'MimeKit.Utils.CharsetUtils'的类型初始值设定项引发异常。
已尝试的无效操作:
- 添加
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); - 开启项目所有配置的“允许不安全代码”
- 确认System.Text.Encoding.CodePages版本为v6.0.0
注:同目录下的Windows Form测试程序可正常运行并发送邮件。
问题2:升级MimeKit/MailKit至3.4.0后测试环境服务库抛出程序集加载异常
开发环境正常,但测试环境创建MimeMessage时抛出异常:
'PerTypeValues`1'的类型初始值设定项引发异常。内部消息:无法加载文件或程序集'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'或其依赖项,找到的程序集清单定义与程序集引用不匹配。
已确认项目中System.Runtime.CompilerServices.Unsafe版本为6.0.0,同目录Windows Form程序仍正常运行。
问题3:重装NuGet包后出现System.Text.Encoding.CodePages版本冲突
移除所有NuGet包后重装MimeKit3.3.0、MailKit3.3.0、System.Text.Encoding.CodePages4.5.1,开发环境出现版本冲突提示:
There was a conflict between "System.Text.Encoding.CodePages, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" and "System.Text.Encoding.CodePages, Version=4.5.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". "System.Text.Encoding.CodePages, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" was chosen because it was primary and "System.Text.Encoding.CodePages, Version=4.5.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" was not. References which depend on "System.Text.Encoding.CodePages, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" [***\Development\Visual Studio\ac\AppSQL\packages\System.Text.Encoding.CodePages.4.5.1\lib\net461\System.Text.Encoding.CodePages.dll]. ***\Development\Visual Studio\ac\AppSQL\packages\System.Text.Encoding.CodePages.4.5.1\lib\net461\System.Text.Encoding.CodePages.dll Project file item includes which caused reference "***\Development\Visual Studio\ac\AppSQL\packages\System.Text.Encoding.CodePages.4.5.1\lib\net461\System.Text.Encoding.CodePages.dll". System.Text.Encoding.CodePages, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL References which depend on "System.Text.Encoding.CodePages, Version=4.5.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" []. ***\Development\Visual Studio\ac\AppSQL\packages\MimeKit.3.3.0\lib\net48\MimeKit.dll Project file item includes which caused reference "***\Development\Visual Studio\ac\AppSQL\packages\MimeKit.3.3.0\lib\net48\MimeKit.dll". MimeKit, Version=3.3.0.0, Culture=neutral, PublicKeyToken=bede1c8a46c66814, processorArchitecture=MSIL MailKit, Version=3.3.0.0, Culture=neutral, PublicKeyToken=4e064fe7c44a8f1b, processorArchitecture=MSIL acAppSQLServerLibrary
问题:找不到任何引用System.Text.Encoding.CodePages4.1.1.0的地方,该版本在NuGet中也不存在,需排查冲突原因。
内容的提问来源于stack exchange,提问作者Frank Sonne
相关产品推荐
相关产品推荐

