window8.1更新发布了之后,一方面手痒,一方面也觊觎windows8.1的改进,手贱的升级了windows,由于不常用自己的电脑Coding,升级之后感觉使用起来一切正常,而且windows8.1确实比8进步不少。
昨天晚上突然想到一个问题要验证一些,于是就开始写代码测试,可是问题就来了,开始调试的时候系统提示IIS无法启动,如下图:
没办法,手动启动呗,可是我擦,启动失败:
好吧,好在iisexpress提供module加载跟踪手段——使用/trace:d选项,跟踪到如下信息:
IIS Express和IIS不同的地方是IIS Express的配置信息放在 ${USER_ROOT}/Documents/IISExpress 目录下,主要放在config/applicationhost.config文件中,模块加载也是在这里配置的,在globalModules配置节下:
既然如此,对症下药即可,在配置文件中查找iisnode,果然在globalModules配置中找到如下配置:
遂将其注释掉,IIS Express正常启动。
回到VS中继续调试代码喽,可是问题又出现了。。。。
IIS提示服务器错误,如下:
原来是名为iisnode的一个module找不到,联想刚才注释掉的配置信息,继续在applicationhost.config文件中查询iisnode,分别找到如下两处:
一个在<modules></modules>配置节:
一个是在<sectionGroup></sectionGroup>配置节:
这两个自然是对前面的这个iisnode的Module的引用。
同样注释之。。。
至此,IIS Express修复完整,可正常启动调试。
但是回过头来,为什么会有这么一个iisnode呢?按理来说,如果是iis express默认的Module的话不应该找不到的啊,努力思索一番。。。原来几个月前无聊,曾经使用微软的Web Platform Installer安装和使用WebMatrix,并使用WebMatrix建立了一个nodejs的站点,而这个iisnode,就是WebMatrix的nodejs站点模板使用的iis模块。至此,一切真相大白。