【问题标题】:How to differentiate between status code of IIS and status code of Web API Application如何区分 IIS 的状态码和 Web API 应用程序的状态码
【发布时间】:2019-03-10 17:12:48
【问题描述】:

将以下端点作为服务,根据其 id 返回用户信息

/getUser?id=1234

客户端或监控工具如何区分 id = 1234 不存在的用户和请求不存在页面的用户?

我对所有状态代码都有同样的问题,例如 500,我的基础架构团队告诉我,您报告了误导性信息,因为他们无法区分来自我的服务的 500 和来自服务器本身 IIS 的 500

【问题讨论】:

    标签: iis asp.net-web-api apm


    【解决方案1】:

    这是一个很好的问题。

    大多数教程会很高兴地告诉您返回 NotFound,即 404。我猜这些人从来不需要构建和支持生产级 API。

    您需要有一些约定并遵守它们。我更喜欢返回 204 而不是 404。204 表示调用成功但没有内容。这样,您将在 data 不存在endpoint 不存在 之间有明显的区别。

    至于 500,您的 API 永远不应该返回 500,除非发生了非常糟糕且无法恢复的事情,服务器端。我建议不要愉快地为所有事情抛出异常。如果您的业务规则不满足,那没有理由抛出任何东西。如果您的 API 无法访问您的数据库,则需要 500 才能表明发生了非常糟糕的事情。至于你报告的 500 问题,我不同意。 IIS 有自己的日志,您的服务将有自己的日志,所以是的,您的基础架构团队可以区分。

    【讨论】:

    • 除了 IIS 本身从不返回 500.0 的事实之外,这个答案涵盖了大多数 support.microsoft.com/en-ca/help/943891/… 基础架构团队在分析 IIS 日志文件时应该能够区分(条目中有子状态),但超过电线每个人都只看到状态代码 500(正文各不相同)。
    猜你喜欢
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多