在ASP.NET MVC View中使用node.js

时间:2016-01-06 16:22:21

标签: c# asp.net asp.net-mvc node.js asp.net-mvc-4

我是.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视图?

2 个答案:

答案 0 :(得分:2)

不幸的是,在同一端口上运行两个应用程序是不可能的。这就是运行Node应用程序时出现端口错误的原因。

你有没有理由在同一个应用程序中尝试这样做?

您似乎要描述的是使用Node创建API并从ASP.NET MVC上编写的网站访问它?

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

答案 1 :(得分:0)

404错误的原因有两个:

  1. 您需要在处理程序定义下添加重写规则,以便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;

  2. 您的node.js请求网址将包含所请求的完整路径,但用于匹配/ Sample的路由将以(根据上面的示例url重写)/ appjs开头,或者可能更多,例如/ iisAppName / appjs / sample。我知道restify可以匹配正则表达式的路由,如果表达也是如此,那么你会使用像

    这样的东西

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