我在 iisnode 下运行 node.js 应用程序(IIS 的扩展,允许 node.js 通过 IIS 管理请求)。默认情况下,iisnode 提供对调试工具的访问权限http://myapp.com/debug
。然而,Windows Azure 网站使用 web.config 中的 urlrewrite 覆盖了这一点(可能是偶然的)。
<system.webServer>
<handlers>
<add name="iisnode" path="app.js" verb="*" modules="iisnode"/>
</handlers>
<rewrite>
<rules>
<rule name="StaticContent">
<action type="Rewrite" url="public{REQUEST_URI}"/>
</rule>
<rule name="DynamicContent">
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
</conditions>
<action type="Rewrite" url="app.js"/>
</rule>
</rules>
</rewrite>
<iisnode
debuggingEnabled="true"
devErrorsEnabled="true"
debuggerPathSegment="debug"
nodeProcessCommandLine=""%programfiles(x86)%\nodejs\node.exe""
logDirectory="..\..\LogFiles\nodejs"
watchedFiles="*.js;iisnode.yml;node_modules\*;views\*.jade;views\*.ejb;routes\*.js" />
</system.webServer>
我对 web.config 重写知之甚少,但在我看来<action type="Rewrite" url="app.js"/>
,只要请求与服务器上的实际静态文件不匹配,它就会将所有请求路由到 app.js(我的主应用程序文件)。这很好,除了我不想/debug
被路由到 app.js,我想让 iisnode 默认处理该请求,就像它应该做的那样。如果我删除<action />
重写/debug
确实会启动 iisnode 调试器,但是当然没有其他工作:P
如何修改此 url 重写以避免/debug
?