gpt4 book ai didi

RazorEngine 无法解析模板

转载 作者:行者123 更新时间:2023-12-04 02:30:10 26 4
gpt4 key购买 nike

我有一个控制台应用程序,它使用 RazorEngine 根据应用程序的运行发送电子邮件。我成功地能够在开发 IDE 中和通过可执行文件运行控制台应用程序发送电子邮件。但是,当我从计划任务运行控制台应用程序时,我在线收到错误“无法解析模板”,

var emailHtmlBody = Engine.Razor.RunCompile("ResponseErrors.cshtml", null, model);

有人遇到过这个吗?

var config = new TemplateServiceConfiguration
{
TemplateManager = new ResolvePathTemplateManager(new[] {"EmailTemplates"}),
DisableTempFileLocking = true
};

Engine.Razor = RazorEngineService.Create(config);
var emailHtmlBody = Engine.Razor.RunCompile("ResponseErrors.cshtml", null, model);

更新 1:

  • 执行计划任务的服务器与控制台应用程序所在的服务器相同。
  • 在计划任务中执行控制台应用程序的帐户是对服务器具有本地管理员权限的域帐户。

更新 2:

没有在用户的临时文件夹中创建的 RazorEngine... 文件夹。

更新 3:

我刚刚创建了一个示例控制台应用程序,它现在正在 IDE 中执行相同的操作。我把它放在 GitHub as RazorEngine_Test 上了

更新 4:

似乎 TemplateServiceConfiguration 没有按设计工作,或者我处理的示例不正确。我用下面的两行更新了测试项目,这解决了我的问题。我不认为这是预期的实现方法,但它有效。发布是因为我知道有人会遇到同样的问题。

string path = AppDomain.CurrentDomain.BaseDirectory;
string filePath = $"{path}EmailTemplates\\ExceptionEmail.cshtml";

最佳答案

所以我今天能够在生产环境中确认修复。添加这两行确实解决了问题。所以完整的代码块是

 var config = new TemplateServiceConfiguration
{
TemplateManager = new ResolvePathTemplateManager(new[] {"EmailTemplates"}),
DisableTempFileLocking = true
};

string path = AppDomain.CurrentDomain.BaseDirectory;
string filePath = $"{path}EmailTemplates\\ExceptionEmail.cshtml";

Engine.Razor = RazorEngineService.Create(config);
var emailHtmlBody = Engine.Razor.RunCompile(filePath, null, model);

关于RazorEngine 无法解析模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51449148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com