在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错误的原因是双重的:
-
您需要在处理程序定义下添加重写规则,以便IIS将所有的调用转发给app.js
<重写>
<规则>
<rule name =“appForward”>
<match url =“appjs / *”/>
<action type =“Rewrite”url =“app.js”/>
</规则>
</规则>
</重写> -
你的node.js请求的URL将包含完整path请求,但是匹配/ Sample的路由将以(根据上面的例子url重写)/ appjs开始,或者可能比这更多,例如/ iisAppName / appjs / sample 。 我知道restify可以匹配正则expression式的路线,如果明确也如此,你会使用类似的东西
app.get({path:/.*/Sample$/,…