【问题标题】:How do I get Azure to let my WebAPI controller return 404?如何让 Azure 让我的 WebAPI 控制器返回 404?
【发布时间】:2014-01-05 00:05:25
【问题描述】:

我有一个 WebAPI 控制器,它在未找到实体时返回空的 404 响应,在找到实体时返回 200。这在我的本地 DevFabric 中运行时效果很好,但在部署时我得到的是 500 而不是 404。200 用例在两种环境中都适用。

    public IHttpActionResult Get(int id)
    {
        var result = getEntity(id);

        if (result == null)
        {
            return NotFound();
        }

        return Ok(result);
    }

为什么我在部署到 Azure 时没有收到 404?

【问题讨论】:

  • 您是否在 500 响应消息中收到任何错误详细信息?
  • 有一些通用文本表明发生了错误 - 没有详细信息。
  • Is NotFound() 您的自定义方法。如果 NotFound 被抛出为异常,则可能由于异常过滤器覆盖错误而发生这种情况。
  • @Chandermani 不,这是 WebAPI 的一部分

标签: azure asp.net-web-api azure-web-roles


【解决方案1】:

根据您提供的信息级别,我可以建议您从 Azure Webrole 远程调试您的应用程序 - http://antirandom.com/2012/09/20/remotely-debugging-a-windows-azure-webrole-via-visual-studio-debugger/

据我了解,500 是您的 Web API 内部服务器服务器。因此,调试将帮助您找出答案。您还可以启用 Azure Web 角色日志记录 - http://msdn.microsoft.com/en-us/library/windowsazure/dn186185.aspx

【讨论】:

  • 谢谢 - 我最终启用了远程桌面并从机器内访问了该服务。这导致了我的问题 - Server 2012 上的 IIS 已经有 mp4 和 m4v 的 mime 类型映射,而我的 IIS 没有,所以 web.config 中有映射来添加它们。从 web.config 中删除它们允许 404 通过。我不确定为什么它正确地提供了 200 响应。
猜你喜欢
  • 2011-02-26
  • 1970-01-01
  • 2015-07-19
  • 2015-04-18
  • 2019-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多