Я перевожу свое существующее консольное приложение в веб-приложение.Я делаю вызов API в контроллере.Приведенный ниже код прекрасно работает в консольном приложении.Но в веб-приложении я получаю исключение на var result = webClient.DownloadString(sourceUrl);
с сообщением "unable to connect to remote server"
, а внутреннее исключение говорит: {"A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond}System.Exception {System.Net.Sockets.SocketException}
Я попытался передать URL-адрес как объект uri, отредактированный файл web.config для включенияучетные данные по умолчанию, servicepointmanager и т. д. Я также попытался сделать его асинхронным, используя async и await.Я действительно не знаю, что происходит.Я нахожусь за корпоративным прокси, но вызов API прекрасно работает в консольном приложении и Postman.
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Web.Http;
namespace webApp.Controllers
{
public class DataController : ApiController
{
private string sourceUrl="http://api.openweathermap.org/data/2.5/weather?zip=94040,us&appid=YOURID";
[Route("")]
public void GetAlldata()
{
var dataCall = DownloadData(sourceUrl);
}
private string DownloadData(string url)
{
try
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var webClient = new WebClient();
IWebProxy wp = WebRequest.DefaultWebProxy;
wp.Credentials = CredentialCache.DefaultCredentials;
webClient.Proxy = wp;
var result = webClient.DownloadString(sourceUrl);
return result;
}
catch (Exception ex)
{
return ex.Message;
}
}
}
}