标签: iisnode

Windows Azure网站覆盖了我的node.js应用程序中的404和500错误页面

我使用Windows Azure网站来托管node.js应用程序.到目前为止,一切都很好,除了我的自定义错误.在我的节点应用程序中,我有一个错误处理程序,可以在我的本地计算机上呈现自定义404和自定义500错误页面.但是,当我发布到azure时,当我将statusCode设置为除200以外的任何值时,它会覆盖响应.

如果我没有将500或404 statusCode传递给响应,那么这不会发生,但我确实希望状态代码能够进入浏览器.在本地我得到我的自定义错误页面就好了:

但是,在azure网站上,它只返回一行文字:

由于发生内部服务器错误,无法显示页面.

我尝试创建自己的web.config以覆盖默认的自定义错误,但似乎没有任何效果.这是我的web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
        <customErrors mode="off" />
    </system.web>
    <system.webServer>
        <handlers>
            <add name="iisnode" path="app.js" verb="*" modules="iisnode"/>
        </handlers>
        <rewrite>
            <rules>
                <rule name="StaticContent">
                    <action type="Rewrite" url="public{REQUEST_URI}"/>
                </rule>
                <rule name="DynamicContent">
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
                    </conditions>
                    <action type="Rewrite" url="app.js"/>
                </rule>
            </rules>
        </rewrite>
        <iisnode
            debuggingEnabled="true"
            devErrorsEnabled="true"
            debuggerPathSegment="debug"
            nodeProcessCommandLine="&quot;%programfiles(x86)%\nodejs\node.exe&quot;"
            logDirectory="..\..\LogFiles\nodejs"
            watchedFiles="*.js;iisnode.yml;node_modules\*;views\*.jade;views\*.ejb;routes\*.js" />
    </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我不确定iisnode(将请求路由到node.js的iis的扩展名)负责覆盖我的错误页面或者iis本身是否负责.有什么建议?

web-config azure node.js iisnode

32
推荐指数
1
解决办法
8473
查看次数

如何为Web应用程序运行Node.JS服务器?

信息:我对node.JS很新!

我编写了一个可以侦听端口XXXX上的http请求的示例服务器.当我从命令行(Windows)运行此服务器时,它似乎运行良好.它响应在浏览器中打开时对localhost:XXXX的请求.

问题:这是应该如何工作的吗?要使节点服务器运行,是否应始终打开CMD提示以使服务器侦听请求?我不能用IISNode"做点什么"吗?

我理解,如果我向一个JS文件发出请求,这个文件在IISNode中被标注为Node.JS文件并且NODE应该处理它; 然后我会让Node处理我的请求.但是,这假设IIS是我的Web服务器,并且Node可以处理特定请求.

我希望我在这里有意义!:)

node.js iisnode

29
推荐指数
3
解决办法
4万
查看次数

IIS,Node.js和未使用虚拟目录正确配置IISNode的Web应用程序

我在IIS中有以下设置:

  • 默认网站(www.foo.com)托管标准html网站
  • 运行IIS节点的默认网站(www.foo.com/bar)下的Web应用程序
  • 节点项目正在利用快递

我不能为我的生活得到这个东西正确配置所以当我点击Web应用程序正确提供节点应用程序.我认为我的问题在于web.config.任何人都可以帮我写一个正确的web.config来使这个工作正常吗?我的配置的当前版本将为我提供一个节点响应,该响应表明它无法在我键入的任何URL中获取资源.

这是我的配置的当前版本:

<configuration>
  <system.webServer>    
    <handlers>
      <add name="iisnode" path="app.js" verb="*" modules="iisnode" />
    </handlers>    
    <rewrite>
      <rules>
        <rule name="bar">
          <match url="bar/*" />
          <action type="Rewrite" url="app.js" />
        </rule>
      </rules>
    </rewrite>    
  </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

iis node.js express iisnode

16
推荐指数
1
解决办法
1万
查看次数

Node.js本机模块不是有效的Win32应用程序错误

尝试为node.js创建Hello World本机模块

在VS 2012中获得了一个带有一个文件的Win32项目:

#include <node.h>
#include <v8.h>

using namespace v8;

Handle<Value> Method(const Arguments& args) {
  HandleScope scope;
  return scope.Close(String::New("world"));
}

void init(Handle<Object> target) {
  target->Set(String::NewSymbol("hello"),
      FunctionTemplate::New(Method)->GetFunction());
}
NODE_MODULE(hello, init)
Run Code Online (Sandbox Code Playgroud)

那个编译成hello.node.
选项:
- 动态库(.dll)
- 无公共语言运行时支持

使用它像:

hello = require './hello'
console.log hello.hello()
Run Code Online (Sandbox Code Playgroud)

它适用于本地机器(win8 x64,节点:0.8.12)
但是在远程服务器(Windows Server 2008 x64,节点:0.8.12,iisnode:0.1.21 x64,iis7)上它会抛出此错误:

应用程序抛出未捕获的异常并终止:错误:
%1不是有效的Win32应用程序.

位于Function.Module的Module.load(module.js:356:32)的
Object.Module._extensions..node(module.js:485:11)的C:\ inetpub\test\lib\server\hello.node . _load(module.js:312:12) 在Module.require(module.js:362:17) at的require(module.js:378:17) 处.(C:\ inetpub\test\lib\server\index.js:32:9) 在Module._compile(module.js:449:26) 处于Object.Module._extensions..js(module.js:467:10) ) 在Function.Module._load的Module.load(module.js:356:32) 处(module.js:312:12)








我尝试过:
使用应用程序池设置(启用win32应用程序)没有帮助.
Iisnode x86不安装在x64操作系统上.
由于错误,无法编译为x64:错误2错误LNK1112:模块机器类型'X86'与目标机器类型'x64'冲突C:\ derby\hello\build \node.lib(node.exe)hello

有没有人有什么建议?

native node.js iisnode

15
推荐指数
1
解决办法
3万
查看次数

如何使用ASP.Net,IISNode,Node.JS和SQL Server实现Socket.IO以进行基于事件的推送通知?

对于通知项目,想要推送事件通知.这些是登录,更改个人资料等内容,并显示给相应的客户端.我想讨论将它们放在一起的一些想法,并就最佳方法提出一些建议.

在这里注意到,可以使用_changes流检测对CouchDB所做的更改,由Node拾取,然后一个进程启动.我想实现这样的东西(我使用的是SQL Server,但这个级别的入口点可能不是最好的解决方案).

而不是遵循CouchDB示例(检测基于数据库的事件,我认为这只会使事情变得复杂,因为我们对客户端事件感兴趣),我当时认为当事件发生时,例如用户登录,然后发送消息带有一些事件详细信息的节点服务器(RESTful请求?).然后处理该消息并将其广播到所有连接的客户端; 相应的客户端显示通知.

拟议的生态系统:

  • .Net 4.0
  • IIS
  • IISNode
  • Socket.IO
  • Node.js的
  • SQL Server 2008

这将建立在使用.Net框架(IIS等)的现有项目之上.许多客户端的浏览器不支持Web套接字,因此使用Socket.IO是一个不错的选择(后备支持).但是,从我所看到的,Socket.IO仍然只支持通过IISNode进行长轮询(这不是一个真正的问题).

一个选项是将Socket.IO/Node端点暴露给所有客户端,以便基于客户端的通知可以通过JS发送到节点服务器,节点服务器广播消息.(遵循基本的聊天服务器/客户端/服务器示例).

或者,可以使用IIS端点,但只能支持长轮询(通过Socket.IO).这将提供一些额外的.Net后端处理,但可能使架构过于复杂.

Node是否有基于SQL Server的事件通知?

什么是最好的方法?

如果我没有正确的术语生态系统配置,请澄清.

谢谢.

asp.net-4.0 sql-server-2008-r2 node.js socket.io iisnode

14
推荐指数
1
解决办法
2万
查看次数

从iisnode访问web.config设置?

如果我将设置添加到我的应用程序的web.config文件中,是否有API可以从我的应用程序中读取设置,或者我是否必须使用XML库读取该文件?

iisnode

10
推荐指数
1
解决办法
3367
查看次数

可以在iisnode下使用ASP.NET FormsAuthentication进行NodeJS应用程序身份验证吗?

1)我们有一个NodeJS应用程序,我们需要在IIS 7.5/Win2k8 R2下托管.
2)我们有其他已经使用ASP.NET FormsAuthentication的应用程序.3)将使用NodeJS应用程序的用户与现有应用程序的用户是相同的用户.

因此我们将FormsAuthentication配置设置放在web.config中,并且IIS正在读取它:

[IIS>站点> {iisnode-site}>身份验证] - 无法发布图像!

但是,它完全忽略了配置 - 所以我想也许在FormsAuthentication模块之前调用iisnode模块,但是当我查看模块列表(有序视图)时,它会在此站点的底部列出iisnode,而上面列出了FormsAuthentication模块iisnode.

这甚至可能吗?我在另一篇文章@Incept上看到了带有HttpModule的iisnode请求可能是解决方法,但这种方法意味着我们需要滚动一个XHR头代理(各种) - 我们可以这样做,但作为最后的手段.

asp.net forms-authentication restful-authentication formsauthentication iisnode

10
推荐指数
1
解决办法
907
查看次数

如何在IIS中托管节点应用程序?

我正在开发一个平均堆栈的应用程序.唯一的区别是我想在IIS而不是express.js中托管我的应用程序.这样做是否可行或可行?有哪些可能的优点和缺点?提前致谢.

iis node.js express iisnode mean-stack

10
推荐指数
1
解决办法
2万
查看次数

错误:EPERM,Node.js和Etherpad Lite不允许操作

我尝试在我的计算机上安装Etherpad Lite站点并运行IIS,然后再将其上载到Azure for Web Sites,但是当我尝试(http://pastebin.com/4rZWbqix)时出现此错误:

处理请求时,iisnode遇到错误.HRESULT:0x2 HTTP状态:500 HTTP原因:内部服务器错误

您收到此HTTP 200响应,因为system.webServer/iisnode/@devErrorsEnabled配置设置为"true".

除了node.exe进程的stdout和stderr的日志之外,请考虑使用调试和ETW跟踪来进一步诊断问题.

node.exe进程生成到stdout和stderr的最后64k输出如下所示:fs.js:520返回

      binding.lstat(pathModule._makeLong(path));
              ^ Error: EPERM, operation not permitted 'C:\Users\Matthew'
at Object.fs.lstatSync (fs.js:520:18)
at Object.realpathSync (fs.js:1047:21)
at tryFile (module.js:142:15)
at Function.Module._findPath (module.js:181:18)
at Function.Module._resolveFilename (module.js:336:25)
at Function.Module._load (module.js:280:25)
at Module.runMain (module.js:492:10)
at process.startup.processNextTick.process._tickCallback (node.js:244:9)
Run Code Online (Sandbox Code Playgroud)

在Etherpad的目录中没有fs.js文件,所以我认为它是Node.js的一部分有问题.我是Node.js的新手,所以任何帮助都会受到赞赏.

编辑1:我目前正在寻找Azure的替代品,并授予C:\ Users\Matthew权限.但是有可能以某种方式修改fs.js以在try.lstat周围放置一个try/catch吗?

编辑2:稍微玩了一下(添加权限工作!),我已经得到它的工作.但现在加载127.0.0.1:81返回:

处理请求时,iisnode遇到错误.HRESULT:0x2 HTTP状态:500 HTTP原因:内部服务器错误

您收到此HTTP 200响应,因为system.webServer/iisnode/@devErrorsEnabled配置设置为"true".

除了node.exe进程的stdout和stderr的日志之外,请考虑使用调试和ETW跟踪来进一步诊断问题.

node.exe进程生成到stdout和stderr的最后64k输出如下所示:

[x1B] [33m [2012-10-03 20:28:13.587] [WARN] console - [x1B] [找到39mNo设置文件.继续使用默认值!

[x1B] [32m [2012-10-03 20:28:14.338] [INFO] console - [x1B] [39mInstalled plugins:

看起来这不是一个错误,因为输出的是预期的,但似乎停在plugins.formatPlugins().

azure node.js etherpad iisnode

8
推荐指数
1
解决办法
8367
查看次数

HTTPS和iisnode

我通过使用iisnode将节点与IIS结合使用.

在我看来,我以前在Node中配置服务器的事情现在可以直接在IIS中完成.

像:

  • https配置(和证书)
  • http到https重定向

这是否意味着我可以摆脱那样做的节点代码并且只针对IIS方法?

var fs = require('fs');
var https = require('https');

var options = {
    key: fs.readFileSync('./ssl/xxxxxxx.private.pem'),
    cert: fs.readFileSync('./ssl/xxxxxxx.public.pem'),
};

https.createServer(options, app).listen(443);
Run Code Online (Sandbox Code Playgroud)

iis node.js iisnode iis-8.5

8
推荐指数
1
解决办法
2095
查看次数