在Node Azure Web App中自定义错误信息

6

我发现了一个与在Azure Web应用程序上运行Node和IIS相关的有趣问题,并想分享一下,因为我找不到相关信息。

问题:

我的生产应用程序上的自定义错误消息无法传递到客户端,但本地运行却没有问题。

以下是一个快速示例:

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.'});
    }
    // ...
});

这个问题通过我的Web应用程序以标准的“400:错误请求...”消息传递,而不是我的自定义错误消息。 在客户端,我试图执行JSON.parse(err.responseText).error,但它没有起作用,因为err.responseText"Bad request..."字符串,而不是我的JSON对象。

1个回答

10
解决方案! 在你的web.config文件中,在<system.webServer> ... </system.webServer>之间添加以下行: <httpErrors existingResponse="PassThrough" /> 希望没有其他人像我一样遇到这个问题。我确信这是错误的谷歌搜索和对IIS的经验不足的混合体,但我从来没有在网上找到过答案,我偶然发现了一些链接,导致我找到了IIS错误处理页面
希望这能帮助到其他人!如果你运行一个IIS Web应用程序,这个文档中有很多有用的信息,我强烈建议仔细阅读。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接