作为现有的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" />