我正在编写一个连接到 SQL 数据库并使用我现有的 C# 库的 ASP.Net MVC 应用程序。
我还有一个 TCP 服务器 Windows 应用程序,它通过 XML 发送/接收 TCP 消息。我已经成功设置 node.js 和 socket.io 来处理所有这些,并且有一个 html 页面可以向服务器发送/接收消息。Node.js 目前正在提供 html 页面。发送/接收数据时,XML 会转换为 JSON。
我打算设置我的 MVC 应用程序来为页面提供服务,但只是想知道您对这种跨框架设置的使用有何想法。它看起来是否可行并且是处理 TCP 消息并将其发送到浏览器的好解决方案?我还阅读了有关在 IIS 中托管节点的iisnode,我想这对我的设置来说是一个好主意。你对此有何看法?
我目前正在运行一个简单的 express.js 示例,只是试图让网站图标正常工作。在本地一切正常,但是当我将它上传到我的生产服务器时,它只显示默认图标。我尝试清除缓存,但生产服务器图标似乎不想显示。我正在 Windows 2008 aws 服务器上的 iisnode 上运行所有内容。
有谁知道可能是什么问题?
var express = require('express');
var app = express();
var port = process.env.PORT || 3000;
var bodyParser = require('body-parser');
//for favicon
var favicon = require('serve-favicon');
app.configure(function() {
app.use(express.favicon(__dirname + '/views/icons/favicon.ico'));
app.use(express.static(__dirname, 'views'));
});
app.listen(port);
console.log("full path is: " + (__dirname + '/views/icons/favicon.ico'));
console.log('The magic happens on port ' + port);
Run Code Online (Sandbox Code Playgroud) 我有一个 ExpressJS node.js 应用程序在 Windows Server 2016 VM 上的 IISNode 上运行,具有 4 个内核和 32GB 内存。我可以为每个内核设置一个进程,因此我的应用程序正在运行 4 个 node.exe。节点版本为 v6.10.3。
这是资源通常的样子:
我可以看到由于内存波动,节点垃圾收集似乎正在发生。如屏幕截图所示,它通常会在峰值工作下方悬停。
但是,我试图找出这些进程之一的 CPU 利用率飙升至 100% 的原因。每当发生这种情况时,我都会被迫终止 node.exe,因为我的整个应用程序都停止了。它将停滞在 CPU 峰值,然后所有进一步的请求都在旋转。
现在我被迫在计时器上回收我的应用程序池以完全终止所有工作节点进程并重新启动它们。这可以抑制应用程序长时间停机。
我很欣赏任何见解!
我有一个运行良好的简单服务器(如下),问题是 process.env.PORT 的值不是我预期的数字,而是一个字符串值,如“\\.\pipe\d226d7b0-64a0- 4d04-96d4-a75e1278b7a9”。如何获取 http 侦听器正在使用的端口的实际数值?
var path = require("path");
var server = require("../server/server.js");
server.start(process.env.PORT, function() {
console.log("Server started.");
});
Run Code Online (Sandbox Code Playgroud) 偶然发现了一个有趣的问题,一个运行Node with IIS的Azure Web App,想要分享,因为我找不到它的信息.
问题:
我的自定义错误消息没有在我的生产应用程序上发送到客户端,但在本地通过就好了.
快速举例:
app.post('/user', function(req, res, next) {
// Parse out the user data
// ...
// Oh no! An error!
if (invalidData) {
return res.status(400).json({error: 'Invalid username, must be at least 4 characters.'});
}
// ...
});
Run Code Online (Sandbox Code Playgroud)
这是通过我的Web应用程序作为标准的"400:错误请求..."消息,而不是我的自定义错误消息.在客户端,我试图做JSON.parse(err.responseText).error这是无法正常运转的err.responseText是"Bad request..."字符串,而不是我的JSON对象.
嗨,我尝试在IIS上运行节点作为现有网站的子目录.
它可以工作,但当我去一个特定的js文件时,我收到了这条消息,不知道该怎么做.
iisnode模块无法启动node.exe进程.确保node.exe可执行文件在web.config的system.webServer/iisnode/@nodeProcessCommandLine元素中指定的位置可用.默认情况下,在PATH环境变量中列出的某个目录中需要node.exe.
我在Win7框上本地在IIS 7上设置IISNode.我按照网站上的说明进行操作,样品工作正常.
我在IIS管理器中创建了一个新网站和AppPool,以运行Express站点的全新shell.我已经添加了web.config来将iisnode模块绑定到我的起始.js文件.
当我浏览到默认路由(/)时,我收到一个Http 403.14错误(服务器配置为不列出目录的内容).
我试图将IISNode示例目录重新映射到我的Express应用程序所在的位置并发生同样的错误.
如果我尝试转到不存在的路由,我会收到Connect的404错误消息Cannot VERB ROUTE.
我觉得我错过了一些简单的东西(希望很明显).
有没有人碰到这个并且可以为我提供一些见解?即使我可以查看,在线查看也没什么用.
我已经在azure上的app服务上部署了一个节点js web应用程序.问题是我的申请偶尔会因为不明原因而被杀.我已经使用kudu对所有日志罚款进行了详尽的搜索.
如果我重新启动应用服务,应用程序开始工作
有没有什么办法可以在崩溃后重新启动我的节点应用程序.无论如何都要永远奔跑.例如,如果在IIS中部署的asp.net代码中发生任何错误,IIS永远不会崩溃,它会继续提供其他传入请求.
在azure app服务中使用ever/pm2之类的东西.
更新我的hubot项目后,它不再在Azure上运行.我可以在OS X和Windows上本地运行干净的副本,但在Azure上我收到以下错误
错误无法加载适配器松弛 - 错误:找不到模块'hubot'
在本地,我安装了节点6.9.1和npm 3.10.9.Azure分别使用版本6.9.0和3.10.8.
不幸的是,我还没弄清楚如何收集更多信息,因为节点应用程序似乎没有达到产生任何更详细输出的程度.
该项目和Azure网站最初是在去年创建的,在我更新了npm依赖项和节点版本后开始失败.但是,在恢复到节点4.x和npm 2.x或节点0.10.x或npm 1.x后,我仍然得到相同的错误.
这是我很大程度上未经修改的hubot项目,它可以重现错误.README包含我将其部署到Azure的步骤.
任何见解将不胜感激
的package.json
...
"dependencies": {
"coffee-script": "^1.11.1",
"hubot": "^2.19.0",
"hubot-diagnostics": "0.0.1",
"hubot-google-images": "^0.2.6",
"hubot-google-translate": "^0.2.0",
"hubot-help": "^0.2.0",
"hubot-maps": "0.0.2",
"hubot-pugme": "^0.1.0",
"hubot-rules": "^0.1.1",
"hubot-scripts": "^2.17.2",
"hubot-shipit": "^0.2.0",
"hubot-slack": "^4.2.1"
},
...
Run Code Online (Sandbox Code Playgroud)
hubot在package.json中的依赖项中列出 - 如果不是,它将无法在本地运行.我知道kudu运行npm install --production,所以我确定它是依赖项而不是devDependencies.
Gary Liu - MSFT能够对原因有所了解并提供了一种解决方法,但为什么hubot-slack: 4.+在其他地方运行时不能在Azure上运行?