Я использую пакеты ASP.NET Web API и ASP.Net Web API Client nuget. Когда мой клиент вызывает API, и что-то пойдет не так, например, метод API вызвал исключение, API возвращает HTTPResponseMessage с кодом состояния и кодом состояния InternalServerError, , но сообщение на английском языке, как я могу получить локализованную версию этого сообщения?Локализация ответа об отказе ASP.Net Web API
1
A
ответ
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 ошибки вы получаете
чтобы получить локализованные и содержательные сообщения об ошибках клиента вы можете использовать класс 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;
}
}
Смежные вопросы
- 1. Web Api - стоимость недвижимости Локализация
- 2. локализация Enum в Web API
- 3. Flex Локализация Выпуск результата ответа Web Service
- 4. Локализация web api odata лучшие практики?
- 5. facebook api, который уведомляет об отказе
- 6. API-адрес уведомления об отказе Foursquare
- 7. Локализация сообщений об ошибках asp.net по умолчанию
- 8. Заявление об отказе
- 9. Оповещение об отказе
- 10. Возврат Действительный список перечислений в ASP.NET Web API Ошибка ответа
- 11. IHttpActionResult WEB API заголовок ответа
- 12. Формат ответа от Web API
- 13. Локализация сообщений об ошибках веб-Api
- 14. Изменение типа содержимого ответа в asp.net Web API
- 15. ASP.NET Web API: правильный способ возврата 401/несанкционированного ответа
- 16. ASP.Net Web APi C# - GetAsync не возвращает содержимое ответа XML
- 17. Asp.net Web Api устанавливает код состояния ответа на номер
- 18. Как получить длину ответа в ASP.NET Web API-контроллере?
- 19. Реализация уведомления об отказе GCM
- 20. ASP.NET Web API Formatters
- 21. Asp.net web api services
- 22. ASP.NET Web API метод
- 23. Потребление asp.net web api
- 24. ASP.NET MVC WEB API
- 25. 404 ASP.NET Web API
- 26. ASP.NET Web API CacheControl
- 27. asp.net web api architecture
- 28. ASP.net web api
- 29. Загрузить ASP.NET Web API
- 30. Asp.net web api Сессия