500 Внутренняя ошибка сервера при доступе к API Google Directions с веб-сайта asp.net mvc, размещенного в IIS
Я пытаюсь получить доступ к веб-API Google Directions из моего веб-приложения asp.net mvc. Моя проблема в том, что можно получить доступ к API во время отладки в Visual Studio, но после размещения сайта в IIS браузер зависает. При отладке в браузере он показывает, что сервер API Google не отвечает, и возвращает 500 - Внутренняя ошибка сервера следующим образом:
Ошибка сервера в приложении '/' Попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через некоторое время, или не удалось установить соединение, так как подключенный хост не смог ответить 216.58.220.10:443 Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.Net.Sockets.SocketException: попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через определенный промежуток времени, или не удалось установить соединение, так как подключенный хост не ответил 216.58.220.10:443
Ошибка источника:
Во время выполнения текущего веб-запроса было сгенерировано необработанное исключение. Информация о происхождении и местоположении исключения может быть идентифицирована с помощью трассировки стека исключений ниже.
Трассировки стека:
[SocketException (0x274c): Попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через определенный промежуток времени, или не удалось установить соединение, потому что подключенный хост не смог ответить 216.58.220.10:443]
System.Net.Sockets.Socket.DoConnect (EndPoint endPointSnapshot, SocketAddress socketAddress) +309
System.Net.ServicePoint.ConnectSocketInternal (логическое connectFailure, сокет s4, сокет s6, сокет и сокет, IP-адрес и адрес, состояние ConnectSocketState, IAsyncResult asyncResult, исключение и исключение) +633[WebException: невозможно подключиться к удаленному серверу]
System.Net.HttpWebRequest.GetResponse () +1740
BDW.Rotterdam.Common.APIManager.GetAverageTravelTime (String startLocPos, String endLocPos) +196
BDW.Rotterdam.Models.DBManager.AddTrajectoryToDB (строка userName, Int32 startLocation, Int32 endLocation, String trajectoryName) +3149
BDW.Rotterdam.Controllers.MapViewController.AddTrajectory (MapView addtrajectoryobj) +156 lambda_method (Closure, ControllerBase, Object []) +139
System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, параметры IDictionary 2) +265
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod (ControllerContext controllerContext, ActionDescriptor actionDescriptor, параметры IDictionary`2) +35
System.Web.Mvc.Async.<> C__DisplayClass42.b__41 () +34 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod (IAsyncResult asyncResult) +60
System.Web.Mvc.Async. <> C__DisplayClass39.b__33() +77 System.Web.Mvc.Async.<> C__DisplayClass4f.b__49() +371 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAithilet 60
System.Web.Mvc.Async. <> C__DisplayClass2a.b__20() +32 System.Web.Mvc.Async.<> C__DisplayClass25.b__22 (IAsyncResult asyncResult) +185
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction (IAsyncResult asyncResult) +53
System.Web.Mvc.<> C__DisplayClass1d.b__18 (IAsyncResult asyncResult) +24
System.Web.Mvc.Async.<> C__DisplayClass4.b__3 (IAsyncResult ar) +22 System.Web.Mvc.Controller.EndExecuteCore (IAsyncResult asyncResult) +68
System.Web.Mvc.Async.<> C__DisplayClass4.b__3 (IAsyncResult ar) +22 System.Web.Mvc.Controller.EndExecute (IAsyncResult asyncResult) +53
System.Web.Mvc.<> C__DisplayClass8.b__3 (IAsyncResult asyncResult) +39
System.Web.Mvc.Async.<> C__DisplayClass4.b__3 (IAsyncResult ar) +22 System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncResult asyncResult) +53
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +399 System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логический и завершенный синхронно) +137Информация о версии: Microsoft .NET Framework Версия:4.0.30319; ASP.NET версия:4.6.1073.0
Это код, который вызывает API Google при получении запроса на публикацию на контроллере из представления:
var requestUri = string.Format("https://maps.googleapis.com/maps/api/directions/
json?origin={0}&destination={1}
&key=API_KEY
&alternatives=true",
Uri.EscapeDataString(startLocPosition),
Uri.EscapeDataString(endLocPosition));
WebRequest request = HttpWebRequest.Create(requestUri);
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
System.Web.Script.Serialization.JavaScriptSerializer parser =
new System.Web.Script.Serialization.JavaScriptSerializer();
string responseStringData = reader.ReadToEnd();
RootObject responseData = parser.Deserialize<RootObject>(responseStringData);
Я пытался использовать другой API_KEY, но проблема все еще сохраняется. Не могли бы вы помочь мне выяснить, почему API направлений Google вызывает внутреннюю ошибку сервера, а не возвращает результат JSON на сервере IIS?