【问题标题】:Method that returns HttpResponseMessage - how do I return an Exception instead, is this possible?返回 HttpResponseMessage 的方法 - 我如何返回异常,这可能吗?
【发布时间】:2014-03-13 15:27:28
【问题描述】:

我正在使用 ASP.NET WebAPI2。这是我的代码:

[HttpPost]
    public HttpResponseMessage SaveNewPdf(HttpRequestMessage req)
            {
                var json = req.Content.ReadAsStringAsync().Result;
                NewFile newFile = JsonConvert.DeserializeObject<NewFile>(json);
                string error = string.Empty;

                // check all the foreign key values to ensure they are valid
                var isArticleCategoryValid = HelperClasses.ForeignKeyChecks.IsArticleCategoryValid(newFile.ArticleCategory);
                var isDocumentTypeValid = HelperClasses.ForeignKeyChecks.IsDocumentTypeValid(newFile.DocumentType);
                var isActionPublisherValid = HelperClasses.ForeignKeyChecks.IsActionPublisherValid(newFile.ActionPublisher);
                var isRuleComplianceValid = HelperClasses.ForeignKeyChecks.IsRuleComplianceValid(newFile.RuleCompliance);

                if (!isArticleCategoryValid)
                {
                    error = "articleCategory in the JSON is not a valid Article Category";
                    return new HttpResponseException();
                }
    }

我想做一些如上所示的事情——返回一个异常指示错误。我知道我可以返回一个带有任何我想要的状态代码的 HttpResponseMessage,但我想返回一个异常。我知道 HttpResponseException,但这需要一个 HttpResponseMessage,所以我又回到了原点。是否可以返回异常?

【问题讨论】:

    标签: c# http exception asp.net-web-api httpresponse


    【解决方案1】:

    您需要使用正确创建的 ErrorResponse 引发 HttpResponseException,如下所示:

    throw new HttpResponseException(Request.CreateErrorResponse(
        HttpStatusCode.BadRequest, // Use the right status code
        "OMG, I like totally FAILED."));
    

    【讨论】:

      猜你喜欢
      • 2012-06-21
      • 2015-03-05
      • 1970-01-01
      • 2012-07-03
      • 2014-05-25
      • 1970-01-01
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多