c# - Razor 引擎找不到视图
问题描述
问题
我目前有一个 .NET Core 库,用于将 Razor 页面呈现为 HTML 电子邮件。我正在关注本教程。在编译时没有错误,但在运行时我收到以下错误:
'无法找到视图'/Views/Emails/NewOrder/NewOrder.cshtml'。搜索了以下位置:/Views/Emails/NewOrder/NewOrder.cshtml'
我已将构建操作设置为NewOrder.cshtml
to Content
,并将复制到输出目录设置为Copy Always
. 我不确定为什么无法找到视图,因为我可以在bin\Debug\netcoreapp2.2\Views
电子邮件被复制到输出目录的文件夹中看到。
代码
我正在使用以下代码搜索视图:
private IView FindView(ActionContext actionContext, string viewName)
{
var getViewResult = _viewEngine.GetView(executingFilePath: null, viewPath: viewName, isMainPage: true);
if (getViewResult.Success)
{
return getViewResult.View;
}
var findViewResult = _viewEngine.FindView(actionContext, viewName, isMainPage: true);
if (findViewResult.Success)
{
return findViewResult.View;
}
var searchedLocations = getViewResult.SearchedLocations.Concat(findViewResult.SearchedLocations);
var errorMessage = string.Join(
Environment.NewLine,
new[] {$"Unable to find view '{viewName}'. The following locations were searched:"}.Concat(
searchedLocations));
throw new InvalidOperationException(errorMessage);
}
解决方案
似乎它正在查看源目录而不是实际执行的程序集文件夹。我通过将方法的第一行更改为FindView
以下内容来修复它:
var dir = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
var getViewResult = _viewEngine.GetView(executingFilePath: dir, viewPath: viewName, isMainPage: true);
推荐阅读
- css - 手机切换为横向时响应式网站菜单按钮消失
- amazon-web-services - AWS 使用 Fargate 对 ECS 服务的多个端口进行负载平衡
- java - Spring Hibernate 5异常:HibernateException:无法获取当前线程的事务同步会话
- python - 把一个函数变成一个列表
- ssis - BIML:无法将 DerivedColumn 输出绑定到 ADO.Net 目标(简单问题)
- c# - ContentType 在 ValidatePrincipal 事件中始终为空
- c# - 在 C# 中访问公共 Google API 日历 v3 时出现 404 错误
- python - 何时在 Python 脚本中解析命令行
- c - 指针值没有被加在一起。
- excel - Excel:组合包含值的多个工作表中的行