使用StaticFiles URL重写服务在IISNODE中提供静态文件

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

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

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

但它不起作用。 如果任何人有一个示例应用程序来certificate这个问题,这将是非常有帮助的。

查看iisnode web.config示例,该示例将对公用文件夹中的静态文件的请求redirect到IIS的静态文件处理程序,而不是http://tomasz.janczuk.org/2012/05/yaml-configuration-support- in-iisnode.html 。

如果有人在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> 

我的文件夹结构是:

  • virtualpath / – 指IISconfiguration的虚拟path
    • public / – 包含静态内容
    • server / – 包含服务器应用程序文件