C# Razor引擎找不到视图 问题

C# Razor引擎找不到视图 问题,c#,asp.net-core,razor,C#,Asp.net Core,Razor,我目前有一个.NET核心库,我正在使用它将Razor页面呈现为HTML电子邮件。我跟在后面。编译期间没有错误,但在运行时,我得到以下错误: “找不到视图”/Views/Emails/NewOrder/NewOrder.cshtml”。这个 搜查了以下地点: /视图/电子邮件/NewOrder/NewOrder.cshtml' 我已经将NewOrder.cshtml的构建操作设置为Content,并将copy to output目录设置为copy Always。我不确定为什么无法找到该视图,因为我

我目前有一个.NET核心库,我正在使用它将Razor页面呈现为HTML电子邮件。我跟在后面。编译期间没有错误,但在运行时,我得到以下错误:

“找不到视图”/Views/Emails/NewOrder/NewOrder.cshtml”。这个 搜查了以下地点: /视图/电子邮件/NewOrder/NewOrder.cshtml'

我已经将NewOrder.cshtml的构建操作设置为Content,并将copy to output目录设置为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);

这听起来像是一个路由问题,.net core有一些默认路由,它将查找这些路由以查找可在startup.cs中配置的视图。我以前没有使用过viewEngine,但我认为您可能需要配置或覆盖其路由。下面是一个链接,该链接提供了有关.NETCore中路由的更多详细信息。如果我是你,我可能会把你的视图移出垃圾箱,移到一个更受控制的位置。移动部件太多,没有足够的细节来说明你的设置。