Измените точку входа в стартовом шаблоне React + Redux ядра Asp.Net на контроллер - PullRequest
0 голосов
/ 11 октября 2018

Я успешно установил и запустил стартовый шаблон React + Redux, поставляемый с .Net Core 2.1 (я говорю о проекте, созданном с dotnet new reactredux).

Теперь я хотел бы изменитьмоя точка входа с index.html на мой собственный контроллер в проекте Asp.Net.Core.

Поскольку create-react-app настроен на использование index.html в качестве точки входа, мне пришлось:

  1. Удалите файл index.html
  2. «Извлечь» зависимости (npm run eject), чтобы изменить файл конфигурации для веб-пакета (я удалил InterpolateHtmlPlugin и HtmlWebpackPluginплагины из конфига webpack, а также все ссылки на index.html в build.js и start.js
  3. Добавьте HomeController.cs в проект:

namespace ReactReduxSpa.Controllers
{
    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }
    }
}

Добавьте соответствующий файл Index.cshtml в мой проект с почти таким же содержимым, что и прежний файл index.html, за исключением того, что я теперь вручную вставляю сгенерированный пакет скриптов:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="theme-color" content="#000000">
    <base href="~/" />
    <link rel="manifest" href="~/manifest.json">
    <link rel="shortcut icon" href="~/favicon.ico">
</head>
<body>
    <div id="root"></div>
    <script src="~/static/js/bundle.js" asp-append-version="true"></script>
</body>
</html>

В Startup.cs я изменил app.UseMvc(…) на:
app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "default",
        template: "{controller}/{action=Index}/{id?}");

    routes.MapSpaFallbackRoute(
        name: "spa-fallback",
        defaults: new { controller = "Home", action = "Index" });
});

Мой домашний контроллер теперь выполняется при доступе к сайту, и сам сайт работает как задумано.Тем не менее, я получаю тысячи ошибок в консоли для этих запросов:

Requests to sockjs-node Errors in the console

Просмотр ответаЯ вижу, что сервер просто обслуживал содержимое моего Index.cshtml представления вместо того, чтобы пропустить эти запросы.Я предполагаю, что они используются для разработки для синхронизации сайта и источников.

Подводя итог: я не думаю, что я делаю это правильно, но я не знаю, как это сделатьэто по-другому.Моя цель - просто заменить статический index.htm некоторым динамическим контентом (некоторые биты должны быть сгенерированы на стороне сервера).

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