我正在尝试在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>
但它不起作用。如果有人有示例应用程序来证明这个问题,那将会有很大的帮助。
答案 0 :(得分:9)
如果有人在Google上遇到此问题,并且在接受的答案中提到的示例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>
我的文件夹结构是:
答案 1 :(得分:5)
查看一个示例iisnode web.config,它将public
文件夹中的静态文件请求重定向到IIS的静态文件处理程序,而不是http://tomasz.janczuk.org/2012/05/yaml-configuration-support-in-iisnode.html的Node.js。