作为现有的asp.net站点的应用程序运行时,iisnode错误500

我试图运行iisnode样本作为一个现有的ASP.Net MVC网站的应用程序,我遇到了问题。

IIS在Windows 2008 R2上是7.5版本

样本位于\ program files \ iisnode \ www \

我已经设置了两种方法来访问iisnode样本:

  • 作为端口82上的单独网站,指向\ program files \ iisnode \ www \。 当我导航到http://localhost:82/helloworld/hello.js ,这工作正常,作为回报,我得到

你好,世界! [helloworld样本; iisnode版本是0.2.7,节点版本是v0.8.22]

  • 作为一个“节点”应用程序,当我导航到http://localhost/node/helloworld/hello.js ,在我的Asp.net Web Forms + MVC网站中指向相同的\ program files \ iisnode \ www \,得到一个HTTP 500错误:

    • 模块iisnode
    • 通知ExecuteRequestHandler
    • 处理程序iisnode
    • 错误代码0x8007000d

一个惊人的事情是, http://localhost/node/helloworld/hello.js将不会工作,直到我导航到http://localhost:82/helloworld/hello.js 。 然后http://localhost/node/helloworld/hello.js将开始工作! …如果我做一个iisreset,那么它不会工作了…(直到我导航到http://localhost:82/... )。

我必须补充一点,为了testing目的,网站和应用程序共享相同的应用程序池,它以本地系统,Enable32BitApplication = false,.Net Framework 4.0的forms运行,集成。

这个网站在应用程序没有成功的尝试之后被添加用于testing目的。 所以我不认为问题来自冲突。 两者都使用匿名身份validation,不模仿。

跟踪激活,我可以掌握以下错误信息

iisnode无法初始化新的node.exe进程

似乎网站是能够激活node.exe进程,在那里应用程序不能。 而且,一旦被网站激活,node.exe进程就可用于共享应用程序池中的应用程序。

有人能指出我正确的方向,以便我可以在我现有的网站上使用iisnode作为应用程序吗?

如果这可能有助于某人,我终于发现,问题是在我的根ASP.NET ASP.NET Web.config中引用我的外部appSettings文件的方式。

外部appSettings.config文件被这样引用:

  <appSettings configSource=".\conf\appSettings.config" /> 

直到现在,它运行良好,我从来没有遇到与ASP.NET子应用程序的问题。

我的iisnode子应用程序停止生成HTTP 500错误,只要我删除前导.\在configSourcepath中:

  <appSettings configSource="conf\appSettings.config" />