具有角度通用性的ASP.Net Core spa预呈现在本地工作,但不能在服务器上工作

时间:2019-02-07 10:49:48

标签: asp.net-core angular7 angular-universal

我正在尝试使用asp.net core 2.1在angular7上设置通用角度。预渲染可以在本地版本上完美运行,但不会将代码添加到生产中的服务器上的页面源中,而不会出现错误或日志。

由于缺少日志,我怀疑这是因为未加载/启动服务器模块,但我不知道为什么。这是应该添加到Web配置中的东西吗?

我正在使用Windows共享plesk服务器,该服务器支持node.js和IIS节点。这是我的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 :(得分:0)

我相信您正在滥用预渲染的中间件。

关于预渲染:表示可以按需构建单页应用程序(SPA)以便进行预渲染的功能。仅在开发时使用。在生产中,SPA应该已经在发布期间建立。

您应该将这段代码隐藏在后面:

env.IsDevelopment()

了解更多here

答案 1 :(得分:0)

我最终意识到我在Startup.cs中有app.UseStaticFiles();行和app.UseSpaStaticFiles行。删除app.UseStaticFiles();解决了此问题。但是,我仍然不确定为什么这不会在本地版本上引起问题。