尝试使用 Razor 引擎解析模板时,程序集“mscorlib”中的“System.Security.Principal.WindowsImpersonationContext”错误

Kam*_*Kam 6 .net asp.net-web-api razorengine

我必须创建一个能够发送电子邮件的 Asp.Net Web Api。我设法发送了电子邮件,但仅使用存储在本地变量中的简单模板。下一步是从外部文件渲染模板,如下所示:

            string filePath = @"C:\Data\EmailClient\EmailClient\EmailClient\EmailTemplate\ReceiptTemplate.cshtml";
            var config = new TemplateServiceConfiguration
                             {
                                 TemplateManager = new ResolvePathTemplateManager(new[] { "EmailTemplates" }),
                                 DisableTempFileLocking = true
                             };
            Engine.Razor = RazorEngineService.Create(config);

            if (File.Exists(filePath))
            {
                emailHtmlBody = Engine.Razor.RunCompile(filePath, null, email);
                mail.Body = emailHtmlBody;
            }
Run Code Online (Sandbox Code Playgroud)

问题是,当剃刀引擎尝试解析模板时,会出现以下错误:

"Could not load type 'System.Security.Principal.WindowsImpersonationContext' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'."
Run Code Online (Sandbox Code Playgroud)

我试图从字符串中解析模板,但我也因同样的错误而被阻止。

Mat*_*all 3

我今天在调试项目时遇到了同样的问题,发现该项目引用了 RazorEngine 的 .Net Framework 版本而不是 .NetCore 版本。

在我删除该引用并使用正确的数据包后,该应用程序开始工作。

这可以解释为什么您创建面向 4.6.1 的 Web Api 的决议有效。

  • “..删除该引用并使用正确的数据包,应用程序开始工作”是什么意思?RazorEngine 没有 .NET core 版本。您可以在这里提供详细的答案吗? (4认同)
  • @Seany84:与 Matt Small 相同的问题,只是我使用了 Oracle.ManagedDataAccess (Old School .NET)而不是 Oracle.ManagedDataAccess.Core,因此这不一定特定于 RazorEngine 包。另外,我在 NuGet 中看到 RazorEngine * 和 * RazorEngine.NetCore 。我的项目面向 .NET Core 3.1 (2认同)