用issnode+IIS来托管NodeJs Server之二:移植

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

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


安装完了iisnode之后,就要开始移植我的代码了,因为我的网站用的是expressJs框架,所以移植的过程还是有点小坎坷的。

这个是我的网站的基本设置,网站名是iisCER,路径端口的,见图:



在Handler Mappings里面可以看到iisnode已经被应用了:



这个是我的web.config:

<configuration>
    <system.webServer>

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

        <rewrite>
            <rules>
                <rule name="mysite">
                    <match url="/*" />
                    <action type="Rewrite" url="app.js" />
                </rule>
            </rules>
        </rewrite>

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

    </system.webServer>
</configuration>

首先,对于app.js的请求都使用iisnode来处理(其实可以写*.js,但是我想以后利用IIS来帮我处理静态页面的路由)

其次,默认的主页设置成了app.js。这样,就不需要用 http://localhost/app.js 来访问我的网站主页了。

最后,我加入了URL Rewrite,所有对于我网站子路径(Sub Path)的请求,都由app.js来处理。这样expressJs框架就能正常使用了。


在调试过程中,其实还是碰到一些问题的,我调试的方法是:

1. 添加Debug代码:为简单起见,修改app.js,加入这三行代码调试,看看每一个web请求,到底是被哪个handler处理的(当然,这个代码最后是要删除的):

app.get("/", function (req, res) {
    res.send(200, "this is handled in app.get(/).");
});

app.get("/myapp", function(req,res) {
    res.send(200, "this is handled in app.get(/myapp).");
});

app.use(function (req, res) {
    res.send(200, "this is handled in app.use().");
});

2. iisnode会把日志保存到你网站的iisnode子目录里面,根据这个日志,分析起来很方便:

memcached is initialized
Express server listening on port \\.\pipe\5bc8ccb7-fa9c-4b93-86fb-18c051a9b4ad
GET / 200 10644ms - 3.18kb
GET /javascripts/jquery.min.js 304 3ms
GET /plugins/jquery-ui-1.10.3.custom/css/ui-darkness/jquery-ui-1.10.3.custom.min.css 304 2ms
GET /plugins/jquery-ui-1.10.3.custom/js/jquery-ui-1.10.3.custom.min.js 304 1ms
GET /stylesheets/style.css 304 1ms
GET /stylesheets/computer_style.css 304 1ms
GET /stylesheets/common.css 304 1ms
GET /plugins/jquery-ui-1.10.3.custom/css/ui-darkness/images/ui-bg_glass_20_555555_1x400.png 304 1ms
GET /plugins/jquery-ui-1.10.3.custom/css/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png 304 4ms

好了,网站就这么简单的移植好了!一行代码没改,就加了一个web.config文件。



原文地址:https://www.cnblogs.com/puncha/p/3876906.html