Web API应返回自定义JSON,但返回HTTP状态代码

时间:2016-03-16 23:27:53

标签: c# azure asp.net-web-api asp.net-web-api2

我发现了过去两天一直在发生的奇特事情。

我在Web API 2.0中返回自定义JSON消息。例如。当有一个未经授权的响应(HttpStatusCode 401)..它只返回HttpStatusCode而不是JSON。

简单地说,除了HTTP状态代码200之外的任何东西都不会返回我已经明确放入我的ActionHandlers返回的自定义JSON。

最近在过去两天发生了这种情况。我已经在本地测试了我的代码,并且我得到了我需要的预期输出...自定义JSON错误消息,但是一旦我发布到我的一个插槽,无论是生产还是dev..only HttpStatus代码都被返回。

任何人都可以为我验证这一点吗?我需要一种方法来解决这个问题或至少让Azure看看这个并告诉我该怎么做。我怀疑它是Azure更新,我不知道。

2 个答案:

答案 0 :(得分:0)

当您远程测试您的网站时,可能会出现某种customErrors逻辑。在本地浏览时通常会禁用这些逻辑。 检查您的配置。在IIS下,还有httpErrors配置可能会干扰。

当您的代码产生错误响应时,您是否已将TrySkipIisCustomErrors设置为true?

答案 1 :(得分:0)

好的,所以我已经找到了问题。

将Visual Studio升级到2015以使.NET Framework使用4.6。

将解决方案中的所有项目更改为指向4.6,重新编译,发布并最终测试。

错误现在也返回JSON。

IMO,Azure至少可以向我们发送更新。无论如何,发布这个答案所以希望其他任何使用Web Api的人都可以轻易放弃这个问题。