У меня есть простой веб-api, который будет извлекать файл изображения и возвращать байты вызывающему. Он будет работать, когда я размещаю проект api внутри visualstudio в локальном (IIS Express), однако он не удастся, когда я опубликую этот проект на моем сервере IIS. У кого-нибудь есть идея?Httpclient GetAsync Fails (503 Service Unavailable) внутри веб-API на сервере IIS
[RoutePrefix("api/v1/Test")]
public class TestController : ApiController
{
[Route("GetBytesCount")]
public async Task<int> GetBytesCount()
{
var client = new HttpClient() { Timeout = new TimeSpan(0, 5, 0) };
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = await client.GetAsync(@"http://icons.wxug.com/i/c/k/clear.gif");
response.EnsureSuccessStatusCode();
var imageBytes = await response.Content.ReadAsByteArrayAsync();
return imageBytes.Length;
}
}
, если я назвал его из локальной коробки
http://localhost:57988/lkr/api/v1/Test/Getbytescount
вернет
int xmlns="http://schemas.microsoft.com/2003/10/Serialization/">1689</int>
Когда я называю это с моего сервера, он возвращает
<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
Response status code does not indicate success: 503 (Service Unavailable).
</ExceptionMessage>
<ExceptionType>System.Net.Http.HttpRequestException</ExceptionType>
<StackTrace>
......
</StackTrace>
</Error>
Как несвязанной стороне записки, вы должны использовать 'response.Content.ReadAsByteArrayAsync()' –
Пожалуйста, не удаляйте StackTrace ... трассировки стека указывает на номер строки в коде ... – Hackerman
@ Матиас Цицерон, согласен, я изменю код. –