IRazorViewEngine.FindView с GetView не может найти представление - PullRequest
0 голосов
/ 14 июля 2020

В моем основном проекте asp. net я пытаюсь найти представление Razor, используя этот метод:

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);
}

, где

viewName = "Views/Email/ResetPassword.cshtml"

и _viewEngine - IRazorViewEngine, но не находит.

Моя структура проекта:

Структура проекта

IView.FindView метод вызывается из Business.

У меня также есть другой проект, который имеет структуру проекта и использует тот же метод для получения представлений и, что более важно, находит это представление, но в нем используется netcoreapp2.2, а в моем текущем проекте используется netcoreapp3.1 (версии Microsoft.AspNetCore. Mvc .Razor такие же - 2.2.0).

Почему не может этот метод найти просмотры на. net core 3.1?

ОБНОВЛЕНИЕ

Оба проекта копируют эту папку Views в папку Api\bin\Debug\netcoreapp{version} при сборке.

...