В моем основном проекте 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}
при сборке.