7

我正在尝试在 IIS 上部署 Node.js 应用程序。我在 GitHub 存储库 ( https://github.com/tjanczuk/iisnode/tree/master/src/samples )上看到了示例。

我被困在提供静态文件上。像普通的 Node 应用程序一样,我将静态文件存储在名为 public 的文件夹中。根据几个博客/论坛的建议,我在 web.config 中添加了以下规则:

<rule name="StaticContent">
  <action type="Rewrite" url="public{REQUEST_URI}"/>
</rule>

但它不起作用。如果有人有演示此问题的示例应用程序,那将有很大帮助。

4

2 回答 2

10

万一有人在谷歌上遇到这个问题,并且在接受的答案中提到的示例 web.config 有问题......

这是对我有用的 web.config 文件:

<?xml version="1.0" encoding="utf-8"?>  
<configuration>  
    <system.webServer>           
        <handlers>  
            <add name="iisnode" path="server/app.js" verb="*" modules="iisnode" />  
        </handlers>  
        <rewrite>  
            <rules>  
                 <rule name="LogFile" patternSyntax="ECMAScript" stopProcessing="true">  
                      <match url="iisnode" />  
                 </rule>  
                 <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">                      
                    <match url="^server\/app.js\/debug[\/]?" />  
                 </rule>  
                <rule name="StaticContent" patternSyntax="ECMAScript" stopProcessing="true">
                    <match url=".*" />
                    <action type="Rewrite" url="public/{C:1}" logRewrittenUrl="true" />
                    <conditions>
                        <add input="{REQUEST_URI}" pattern=".*?virtualpath\/(.*)" />
                    </conditions>
                </rule>
                    <rule name="DynamicContent" patternSyntax="ECMAScript">
                    <match url=".*" />
                    <conditions>
                        <add input="{{REQUEST_FILENAME}}" matchType="IsFile" negate="True" />
                    </conditions>
                    <action type="Rewrite" url="server/app.js" logRewrittenUrl="true" />
                </rule>
            </rules>  
       </rewrite>  

        <security>
            <requestFiltering>
                <hiddenSegments>
                    <add segment="node_modules" />
                </hiddenSegments>
            </requestFiltering>
        </security> 
    </system.webServer>  
</configuration>

我的文件夹结构是:

  • virtualpath/ - 指 IIS 配置的虚拟路径
    • public/ - 包含静态内容
    • server/ - 包含服务器应用程序文件
于 2015-06-25T08:41:14.827 回答
5

在http://tomasz.janczuk.org/2012/05/yaml-configuration-support-in查看一个示例 iisnode web.config,它将文件public夹中静态文件的请求重定向到 IIS 的静态文件处理程序而不是 Node.js -iisnode.html

于 2014-06-09T16:38:17.283 回答