我是.Net开发人员和新的Node.js应用程序。我试图通过Node.js为我的ASP.NET MVC应用程序创建一个代理层来进行跨域通信而不涉及我的ASP.NET WebAPI的服务器级配置。
让我们从代码开始,快速理解我的问题,
我创建了一个MVC应用程序,它将我的Node保存在" MyApp / app.js"和ASP.NET MVC视图将对我的Node文件进行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调用失败,出现&#34; 404错误&#34;。我尝试在端口运行我的Node应用程序:80但是它会引发错误&#34;错误:听EACCES 0.0.0.0:80"。为什么我不能在同一个端口上运行我的Node应用程序和ASP.NET MVC视图?
答案 0 :(得分:2)
不幸的是,在同一端口上运行两个应用程序是不可能的。这就是运行Node应用程序时出现端口错误的原因。
你有没有理由在同一个应用程序中尝试这样做?
您似乎要描述的是使用Node创建API并从ASP.NET MVC上编写的网站访问它?
如果是这种情况,您需要在不同的IP地址或不同的服务器上运行它们以共享同一个端口 - 或者只是在不同的端口上运行它们。
答案 1 :(得分:0)
404错误的原因有两个:
您需要在处理程序定义下添加重写规则,以便IIS将所有调用转发到app.js
&LT;重写&GT;
&LT;规则&GT;
&lt; rule name =“appForward”&gt;
&lt; match url =“appjs / *”/&gt;
&lt; action type =“Rewrite”url =“app.js”/&gt;
&LT; /规则&GT;
&LT; /规则&GT;
&LT; /重写&GT;
您的node.js请求网址将包含所请求的完整路径,但用于匹配/ Sample的路由将以(根据上面的示例url重写)/ appjs开头,或者可能更多,例如/ iisAppName / appjs / sample。我知道restify可以匹配正则表达式的路由,如果表达也是如此,那么你会使用像
这样的东西app.get({path:/.*/Sample $ /,...