关闭

用issnode+IIS来托管NodeJs Server之四:支持Debug

2033人阅读 评论(0) 收藏 举报
分类:

这几篇文章是一个系列的:

  1.  用issnode+IIS来托管NodeJs Server之一:安装篇
  2.  用issnode+IIS来托管NodeJs Server之二:移植
  3.  用issnode+IIS来托管NodeJs Server之三:加入Windows集成验证功能
  4.  用issnode+IIS来托管NodeJs Server之四:支持Debug


本来以为iisnode的集成已经很完美了,今天突然想使用下iisnode的调试与日志,所以就作了一些研究,发现真的很不错!我的设置,基本上是参照这篇文章的:http://tomasz.janczuk.org/2011/11/debug-nodejs-applications-on-windows.html


第一,iisnode本身就支持debug模式,使用Chrome访问 http://localhost/app.js/debug,这个URL就进入了debug模式了,可以设置断点,可以单步调试。

第二,但是对于expressJs框架的程序来说,因为URL被重写了,所以简单的使用/debug这个URL是无效的。怎么办呢?也比较简单,在web.config里面写一句话就行了:

  <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
    <match url="^app.js\/debug[\/]?" />
  </rule>

这个意思是说,假如URL匹配 /app.js/debug,那么就不要进行URL重写。我再配置过程中,发现了一些问题,就是浏览器有记忆功能,所以每当你修改了web.config,最好是重启一下IIS服务器、重启一下浏览器,再按Ctrl+F5清一下缓存,在测试。

第三,因为服务器进入了debug状态就不会自己退出,所以需要显式访问 /debug/?kill来退出调试状态。


最后贴一下我的配置文件。为了安全起见,我把/debug改成了/debug_private,这样比较安全:

<configuration>
    <system.webServer>

        <handlers>
            <add name="iisnode" path="app.js" verb="*" modules="iisnode" />
        </handlers>

        <rewrite>
            <rules>
                <clear />

                <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
                    <match url="^app.js\/debug_private[\/]?" />
                </rule>

                <rule name="mysite" enabled="true">
                    <match url="/*" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                    <action type="Rewrite" url="app.js" />
                </rule>

            </rules>
        </rewrite>

        <defaultDocument>
            <files>
                <add value="app.js" />
            </files>
        </defaultDocument>

        <iisnode
            promoteServerVars="AUTH_USER,AUTH_TYPE"
            debuggerPortRange="5058-6058"
            debuggerPathSegment="debug_private"
            maxNamedPipeConnectionRetry="3"
            namedPipeConnectionRetryDelay="2000"
        />

    </system.webServer>
    <system.web>
        <identity impersonate="false" />
    </system.web>
</configuration>




0
0

猜你在找
深度学习基础与TensorFlow实践
【在线峰会】前端开发重点难点技术剖析与创新实践
【在线峰会】一天掌握物联网全栈开发之道
【在线峰会】如何高质高效的进行Android技术开发
机器学习40天精英计划
Python数据挖掘与分析速成班
微信小程序开发实战
JFinal极速开发企业实战
备战2017软考 系统集成项目管理工程师 学习套餐
Python大型网络爬虫项目开发实战(全套)
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:789623次
    • 积分:7794
    • 等级:
    • 排名:第2495名
    • 原创:121篇
    • 转载:73篇
    • 译文:0篇
    • 评论:86条
    最新评论