2013-11-15 10 views
1

Я использую пакеты ASP.NET Web API и ASP.Net Web API Client nuget. Когда мой клиент вызывает API, и что-то пойдет не так, например, метод API вызвал исключение, API возвращает HTTPResponseMessage с кодом состояния и кодом состояния InternalServerError, , но сообщение на английском языке, как я могу получить локализованную версию этого сообщения?Локализация ответа об отказе ASP.Net Web API

ответ

0

Автоматический механизм локализации этих сообщений не существует, но вы можете использовать HttpResponseMessage.ResponsePhrase для изменения сообщения самостоятельно.

1

Вы можете использовать класс ReasonPhrase класса HttpResponseMessage для установки явных/локализованных сообщений об ошибках из Web Api. Например, в настоящее время ваш метод API, просто бросали общее исключение:

public class CustomerController : ApiController 
{ 
    public Customers Get(string id) 
    { 
     NorthwindEntities db=new NorthwindEntities(); 
     var data = from item in db.Customers 
        where item.CustomerID == id 
        select item; 
     Customer obj = data.SingleOrDefault(); 
     if (obj == null) 
     { 
      throw new Exception("CustomerID Not Found in Database!"); 
     } 
     else 
     { 
      return obj; 
     } 
    } 
    ... 
} 

вызова метода API на стороне клиента с идентификатором клиента, который несуществующие:

$.ajax({ 
    type: "GET", 
    url: '/api/Customer', 
    data: {id:$("#txtCustomerID").val()}, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (result) { 
    alert(result.CustomerID + " - " + result.CompanyName); 
    }, 
    error: function (err,type,httpStatus) { 
    alert(err.status + " - " + err.statusText + " - " + httpStatus); 
    } 
}) 

будет отображать один и тот же 500 ошибки вы получаете 500 Error Message

чтобы получить локализованные и содержательные сообщения об ошибках клиента вы можете использовать класс HttpResponseException со свойством ReasonPhrase, имеющими локализованное сообщением:

public Customer Get(string id) 
{ 
    NorthwindEntities db=new NorthwindEntities(); 
    var data = from item in db.Customers 
       where item.CustomerID == id 
       select item; 
    Customer obj = data.SingleOrDefault(); 
    if (obj == null) 
    { 
     HttpResponseMessage msg = new HttpResponseMessage(HttpStatusCode.NotFound) 
     { 
      Content = new StringContent(string.Format("No customer with ID = {0}", id)), 
      ReasonPhrase = "Localzed message CustomerID Not Found in Database!" 
     }; 
     throw new HttpResponseException(msg); 
    } 
    else 
    { 
     return obj; 
    } 
} 
Смежные вопросы