У меня проблема. У меня 2 WebApi. Webapi2 получает данные из БД и возвращает IMAGE. Здесь все нормально и работает. Если я попробую в браузере, покажите мне изображение или если я изменю массив байтов. Проблема с Webapi1, которая вызывает этот webapi2. Я всегда получаю HttpResponseMessage с false для IsSuccessStatusCode. Ошибка - 500 внутренних ошибок сервера. Я новичок, и я не знаю, что делать ... я уже судим много вещейОшибка получения HttpResponseMessage OK
public async Task<HttpResponseMessage> GetFoto(string exemplo, string exemple2)
{
HttpClientHandler handler = new HttpClientHandler()
{
UseDefaultCredentials = true,
};
using (var client = new HttpClient(handler))
{
client.BaseAddress = new Uri("http://192.111.56.1:1762/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync("api/Tr/Test?exemplo="+exemplo+"&pk="+pk+"");
if (response.IsSuccessStatusCode)
{
var data = response.Content.ReadAsByteArrayAsync().Result;
var stream = new MemoryStream(data);
response.Content = new StreamContent(stream);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
return response;
}
else
{
Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
return null;
}
}
}
Моего WebAPI, что работает и вернуть мне изображение:
//connections code that doesn´t matter....
try
{
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
var stream = new MemoryStream(imgBytes);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
return result;
}
catch (Exception ex)
{
return Request.CreateResponse(HttpStatusCode.Gone);
}
Вы проверили журналы системных событий и журналы приложений, чтобы понять, что вызывает 500? Вероятно, что они вызывают исключение. Убедитесь, что вы не просто отбрасываете исключения с помощью try {} catch {} и гарантируете, что вы завершите метод в API с помощью try catch, который регистрирует любые исключения из файловой системы, чтобы помочь устранить неполадки. Удачи! –
@MurrayFoxcroft я отредактировал сообщение! Итак, да, я использую try catch. Проблема в том, что ответ для webapi в порядке и возвращает изображение ... когда другой webapi получает это, эта проблема. Я не знаю, где эти журналы. –
А, а другой WebApi не под вашим контролем? Вам нужно будет обратиться к поставщику/владельцу и попросить их проверить их журналы. 500, как правило, является необработанной ошибкой в API. Если ваши данные были просто неправильными или вы вызывали их неправильно, они должны (если они были построены правильно) просто вернуть что-то в диапазоне 400 ищ, как Bad Request. Но 500 около терминала, что-то разбилось на их стороне. –