• 用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文件。



  • 相关阅读:
    django之验证码
    无法显示SQL Server Management Studio Express解决办法
    程序员常用不常见很难得的地址大全转
    调用ip138的页面获取IP地址
    VS 2010无法创建项目提示写入项目文件时出错 没有注册类别
    webapi token、参数签名是如何生成的(转载)
    尝试asp.net mvc 基于controller action 方式权限控制方案可行性(转载)
    委托学习
    Webapi上传数据(XML)敏感字符解决方案
    redis 学习
  • 原文地址:https://www.cnblogs.com/puncha/p/3876906.html
Copyright © 2020-2023  润新知