Предварительный рендеринг ASP.Net Core spa с угловым универсальным работает локально, но не на сервере - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь настроить angular universal на angular7 с ядром asp.net 2.1.Предварительный рендеринг отлично работает в локальной сборке, но не добавляет код в исходный код страницы на производственном сервере без ошибок и журналов.

Из-за отсутствия журналов, я подозреваю, это связано с тем, что серверный модуль не являетсязагружен / запущен но я понятия не имею почему.Это то, что должно быть добавлено в веб-конфигурацию?

Я использую сервер Windows plesk с общим доступом, который поддерживает node.js и IIS Node.Вот фрагмент из моего Startup.cs

app.UseSpa(spa =>
{
    spa.Options.StartupTimeout = new System.TimeSpan(0, 0, 1000);
    spa.Options.SourcePath = "ClientApp";

    spa.UseSpaPrerendering(options =>
    {
        options.BootModulePath = $"{spa.Options.SourcePath}/dist-server/main.js";
        options.BootModuleBuilder = env.IsDevelopment() ? new 
        AngularCliBuilder(npmScript: "build:ssr") : null;
        options.ExcludeUrls = new[] { "/sockjs-node" };
    });

    if (env.IsDevelopment())
    {
        spa.UseAngularCliServer(npmScript: "start");
    }
});

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

В конце концов я понял, что у меня есть строка app.UseStaticFiles(); и app.UseSpaStaticFiles в Startup.cs.Удаление app.UseStaticFiles(); решило эту проблему.Однако я до сих пор не уверен, почему это не вызывает проблем при локальной сборке.

0 голосов
/ 08 февраля 2019

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

О предварительной визуализации. Представляет возможность создания одностраничного приложения (SPA) по требованию, чтобы его можно было предварительно обработать.Это предназначено только для использования во время разработки.В процессе производства SPA уже должен был быть создан во время публикации.

Вы должны скрыть этот фрагмент кода:

env.IsDevelopment()

Подробнее здесь

...