Node.js 角度通用应用程序不';在IIS中托管时不显示服务器端

Node.js 角度通用应用程序不';在IIS中托管时不显示服务器端,node.js,angular,iis,server-side-rendering,iisnode,Node.js,Angular,Iis,Server Side Rendering,Iisnode,我有一个角度的通用应用程序。我使用visualstudio代码构建应用程序,当我在本地使用npm run build:ssr&&npm run service:ssr运行应用程序时,应用程序运行良好。 加载页面后,当我查看html页面的源代码时,我可以看到所有css、html和其他相关内容。此外,dist文件夹包含运行所需的所有文件 但是,当我复制dist文件夹并在IIS网站中部署时,它总是显示代码的客户端。这意味着,当我“查看”呈现的html页面的源代码时,它有Approt标记和其他javas

我有一个角度的通用应用程序。我使用visualstudio代码构建应用程序,当我在本地使用npm run build:ssr&&npm run service:ssr运行应用程序时,应用程序运行良好。 加载页面后,当我查看html页面的源代码时,我可以看到所有css、html和其他相关内容。此外,dist文件夹包含运行所需的所有文件

但是,当我复制dist文件夹并在IIS网站中部署时,它总是显示代码的客户端。这意味着,当我“查看”呈现的html页面的源代码时,它有Approt标记和其他javascript文件。这表明,它显示的是客户机包,而不是服务器端内容。 IIS结构如下所示:

我有IISNODE,URL重写安装在服务器上。服务器是Windows Server 2016

注意:我认为服务器工作正常。因为我能够在同一台服务器上部署一些示例Angular Universal应用程序,它们加载服务器端内容。我的猜测是,这与这个特定的应用程序有关。不幸的是,我不知道

谢谢你的帮助


谢谢,Jaleel

您可以按照以下步骤在iis中部署应用程序:

1) 运行以下命令检查应用程序是否在本地运行:

ng serve --open
2) 运行NodeJs命令提示符

3) 导航到“角度项目”文件夹

4) 执行npm运行构建:ssr

5) 您将在项目文件夹中看到dist文件夹

6) 转到windows服务器并创建一个空文件夹(例如命名为ng ssr)

7) 复制到dist文件夹到ng ssr

8) 打开ng ssr/dist/server文件夹,您将找到main.js文件

9) 复制main.js并将其直接粘贴到ng ssr文件夹中

10) 在ng ssr文件夹中创建web.conifg文件,并在其中添加以下代码:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>        
      <handlers>
        <add name="iisnode" path="main.js" verb="*" modules="iisnode" />
      </handlers>
      <rewrite>
        <rules>
            <rule name="DynamicContent">
                 <match url="/*" />
                 <action type="Rewrite" url="main.js"/>
            </rule>
            <rule name="StaticContent" stopProcessing="true">  
                  <match url="([\S]+[.](jpg|jpeg|gif|css|png|js|ts|cscc|less|ico|html|map|svg))" />
                  <action type="None" />
            </rule>  
       </rules>
      </rewrite>
        <staticContent>
          <clientCache cacheControlMode="UseMaxAge" />
          <remove fileExtension=".svg" />
          <remove fileExtension=".eot" />
          <remove fileExtension=".ttf" />
          <remove fileExtension=".woff" />
          <remove fileExtension=".woff2" />
          <remove fileExtension=".otf" />
          <mimeMap fileExtension=".ttf" mimeType="application/octet-stream" />
          <mimeMap fileExtension=".svg" mimeType="image/svg+xml"  />
          <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
          <mimeMap fileExtension=".woff" mimeType="application/x-woff" />
          <mimeMap fileExtension=".woff2" mimeType="application/x-woff" />
          <mimeMap fileExtension=".otf" mimeType="application/otf" />
         </staticContent>      
    </system.webServer>
  </configuration>

12) 在IIS中创建网站

13) 在IIS中,转到所创建网站的应用程序池,将.Net Framework版本更改为无托管代码

现在您可以访问该站点


谢谢贾尔帕给你时间。我遵循了与您描述的相同的步骤。但这个问题仍然存在。如果我发现什么,我会告诉你的。Thanks@Jaleel您可以参考此详细步骤,谢谢Jalpa。这是我使用的信号包的一个问题。我想信号员和服务器端的关系不太好。我取下了那块,它开始工作了。再次感谢你的帮助。