2016-09-27 4 views
1

У меня есть простой веб-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> 
+0

Как несвязанной стороне записки, вы должны использовать 'response.Content.ReadAsByteArrayAsync()' –

+0

Пожалуйста, не удаляйте StackTrace ... трассировки стека указывает на номер строки в коде ... – Hackerman

+0

@ Матиас Цицерон, согласен, я изменю код. –

ответ

0

Go к свойствам проекта.

Получить URL-адрес SSL и использовать его в своем браузере для доступа к ресурсу.

enter image description here

+0

кажется, что htts не решает проблему. –

Смежные вопросы