在ASP.NET MVC视图中使用node.js

我是.Net开发人员和新的Node.js应用程序的Bie。 我试图通过Node.js为我的ASP.NET MVC应用程序创build一个代理层来进行跨域通信,而无需接触我的ASP.NET WebAPI的服务器级configuration。

让我们从代码开始,快速理解我的问题,

我已经创build了一个单独的MVC应用程序,该应用程序在“MyApp / app.js”和ASP.NET MVC视图下保存我的节点,以便对我的节点文件进行AJAX调用。

<h2>This is an Index page</h2> <script> $(function () { $.ajax({ url: "/sample", success: function () { alert('Done'); } }); }); </script> 

下面是我的web.config,

 <handlers> <!-- indicates that the app.js file is a node.js application to be handled by the iisnode module --> <add name="iisnode" path="MyApp/app.js" verb="*" modules="iisnode" /> </handlers> 

这是我的app.js,

 var express = require('express'); var app = express(); app.set('port', process.env.PORT || 3000);//When I hardcode to Port:80 I'm getting "Error: listen EACCES 0.0.0.0:80" app.listen(app.get('port'), function () { console.log('Express up and listening on port' + app.get('port')); }); app.get('/Sample', function (req, res) { res.send('Hello World Sample!'); }); 

当我尝试打开我的视图时,AJAX调用失败,出现“404错误”。 我试图运行我的节点应用程序在端口:80,但它会引发错误“错误:听EACCES 0.0.0.0:80”。 为什么我不能在同一个端口上运行我的Node应用程序和ASP.NET MVC视图?

不幸的是,在同一个端口上运行两个应用程序是不可能的。 这就是为什么当你运行Node应用程序时你会遇到端口错误。

是否有一个原因,你试图在同一个应用程序中做到这一点?

你似乎正在描述的是使用Node创build一个API,并从ASP.NET MVC顶部的网站访问?

如果是这种情况,您需要在不同的IP地址或不同的服务器上运行它们以共享相同的端口 – 或者只是在不同的端口上运行它们。

你的404错误的原因是双重的:

  1. 您需要在处理程序定义下添加重写规则,以便IIS将所有的调用转发给app.js

    <重写>
    <规则>
    <rule name =“appForward”>
    <match url =“appjs / *”/>
    <action type =“Rewrite”url =“app.js”/>
    </规则>
    </规则>
    </重写>

  2. 你的node.js请求的URL将包含完整path请求,但是匹配/ Sample的路由将以(根据上面的例子url重写)/ appjs开始,或者可能比这更多,例如/ iisAppName / appjs / sample 。 我知道restify可以匹配正则expression式的路线,如果明确也如此,你会使用类似的东西

    app.get({path:/.*/Sample$/,…