Tôi đang sử dụng HttpClient
để gọi api MVC 4 web của mình. Trong cuộc gọi API Web của tôi, nó trả về một đối tượng miền. Nếu có gì sai, một HttpResponseException
sẽ được ném vào máy chủ, với một tin nhắn tùy chỉnh.HttpClient không báo cáo ngoại lệ được trả về từ API web
[System.Web.Http.HttpGet]
public Person Person(string loginName)
{
Person person = _profileRepository.GetPersonByEmail(loginName);
if (person == null)
throw new HttpResponseException(
Request.CreateResponse(HttpStatusCode.NotFound,
"Person not found by this id: " + id.ToString()));
return person;
}
Tôi có thể thấy thông báo lỗi tùy chỉnh trong nội dung phản hồi bằng IE F12. Tuy nhiên khi tôi gọi nó bằng cách sử dụng HttpClient
, tôi không nhận được thông báo lỗi tùy chỉnh, chỉ có mã http. "ReasonPhrase" luôn là "Không tìm thấy" cho 404 hoặc "Lỗi máy chủ nội bộ" cho 500 mã.
Bất kỳ ý tưởng nào? Làm cách nào để gửi lại thông báo lỗi tùy chỉnh từ API Web, trong khi vẫn giữ kiểu trả về bình thường làm đối tượng miền của tôi?
Máy chủ web nào bạn đang sử dụng, IIS hoặc ASP.NET Web Server? –
Tôi đang sử dụng IIS trên Win 2008 R2. Một lần nữa, nó là ok khi tôi gọi nó bằng cách sử dụng một trình duyệt. – Calvin