Frage

I'm using ASP.NET WebAPI2. Here's my code:

[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();
                }
    }

I would like to do something like shown above - return an Exception indicating an error. I understand I can return an HttpResponseMessage with a status code of whatever I'd like, but I would like to return an Exception. I know about HttpResponseException, but this takes in an HttpResponseMessage, so I'm back to square one. Is returning an exception possible?

War es hilfreich?

Lösung

You need to throw an HttpResponseException with a properly created ErrorResponse as below:

throw new HttpResponseException(Request.CreateErrorResponse(
    HttpStatusCode.BadRequest, // Use the right status code
    "OMG, I like totally FAILED."));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top