В ASP .NET Core 3.0 я не могу использовать файлы с расширением .html в качестве View. Раньше работал в ASP .NET Core 2.2 - PullRequest
0 голосов
/ 18 октября 2019

В ASP .NET Core 2.2 у меня есть такой код:

    public class MainController : Controller
    {
        public IActionResult Index() => ServeView("index.html");

        [ResponseCache(Location = ResponseCacheLocation.None, Duration = 0)]
        public IActionResult Postlogin() => ServeView("postlogin.html");

        private IActionResult ServeView(string viewName)
        {
            var vm = new MainPageModel {BaseUrl = Request.GetBasePath().EnsureEndsWithSlash()};
            return View("~/wwwroot/" + viewName, vm);
        }
    }

И маршруты настроены так:

     app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "postlogin",
                    template: "postlogin.html", defaults: new {controller = "Main", action = "Postlogin"});

                routes.MapSpaFallbackRoute("fallback", new {controller = "Main", action = "Index"});
            });

В ASP .NET Core 3.0 тот же контроллер перестал работать,Я получаю ошибку, как это:

An unhandled exception occurred while processing the request.
InvalidOperationException: The view '~/wwwroot/index.html' was not found. The following locations were searched:
~/wwwroot/index.html

Конечно, файл находится в этом месте ~/wwwroot/index.html. Маршрутизация настроена так:

          app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute("root", 
                    "/", new { controller = "Main", action = "Index" });
                endpoints.MapControllerRoute("index", 
                    "index.html", new { controller = "Main", action = "Index" });
                endpoints.MapControllerRoute("postlogin", 
                    "postlogin.html", new { controller = "Main", action = "PostLogin" });
                endpoints.MapControllers();
            });

И в ConfigureServices Я добавляю Views, используя services.AddControllersWithViews();

Я обошел проблему, переименовав расширение файлов из html до cshtml. И вместо того, чтобы служить представлению ~/wwwroot/index.html, я служу ~/wwwroot/index.cshtml, и теперь все работает. Но я хотел бы знать, это преднамеренное изменение или что-то непредвиденное произошло?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...