Исключение: удаленное имя не может быть разрешено: "url" - PullRequest
0 голосов
/ 22 марта 2019

У меня есть настольное приложение, которое вызывает действие контроллера asp.net mcv и получает ответ. Большую часть времени работает нормально, но иногда настольное приложение получает исключение «Не удается разрешить удаленное имя: url»

Вот функция в настольном приложении, которая делает запрос http-post:

> private bool postRequest(string uri, string json, out string jsonResult)
>         {
>             try
>             {
>                 if (CheckForInternetConnection())
>                 {
>                     var httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
>                     httpWebRequest.ContentType = "application/json";
>                     httpWebRequest.Method = "POST";
>                     httpWebRequest.Timeout = 300000;
>                     //ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 |
> SecurityProtocolType.Tls;
>                     using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
>                     {
>                         //string json = JsonConvert.SerializeObject();
>                         //string json = new JavaScriptSerializer().Serialize(new
>                         //{
>                         //    Username = "myusername",
>                         //    Password = "pass"
>                         //});
>                         streamWriter.Write(json);
>                         streamWriter.Flush();
>                         streamWriter.Close();
>                     }
> 
>                     var res = httpWebRequest.GetResponse();
>                     var httpResponse = (HttpWebResponse)res;
>                     //message = httpResponse.ToString();
>                     //jsonResult = httpResponse.StatusCode.ToString();
>                     //message = httpResponse.StatusDescription;
>                     //return true;
>                     using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
>                     {
>                         var result = streamReader.ReadToEnd();
>                         jsonResult = result.ToString();
>                         return true;
>                     }
>                 }
>                 else
>                 {
>                     throw new Exception("Problem in internet connection.");
>                 }
>             }
>             catch (Exception ex)
>             {
>                 //using (StreamWriter w = File.AppendText(@"C:\Users\Shubham\Desktop\log.txt"))
>                 //{
>                 //    Log(ex.Message, w);
>                 //}
>                 throw ex;
>             }
> 
>         }

ниже - это действие в asp.net mcv, которое вызывается настольным приложением:

> [HttpPost]
>         public ActionResult getSku(EmployeeDetails emp)
>         {
>             try
>             {
>                 if (helper.getSku(emp, out SkuDetails skuDt))
>                 {
>                     JsonCreateResult json = new JsonCreateResult()
>                     {
>                         ex = null,
>                         id = skuDt.SemId,
>                         Message = JsonConvert.SerializeObject(skuDt),
>                         statusCode = HttpStatusCode.Found
>                     };
>                     return Json(json);
>                 }
>                 else
>                 {
>                     var key = dictionary.GetOrAdd(emp.SubscriberId+emp.EmployeeRole, new object());
>                     bool flag;
>                     SkuDetails skuDetails;
>                     lock (key)
>                     {
>                         flag = helper.getSkuFromSm(emp, out skuDetails);
>                     }
>                     if (flag)
>                     {
>                         JsonCreateResult json = new JsonCreateResult()
>                         {
>                             ex = null,
>                             id = skuDetails.SemId,
>                             Message = JsonConvert.SerializeObject(skuDetails),
>                             statusCode = HttpStatusCode.Found
>                         };
>                         return Json(json);
>                     }
>                     else
>                     {
>                         JsonCreateResult json = new JsonCreateResult()
>                         {
>                             ex = null,
>                             id = string.Empty,
>                             Message = string.Empty,
>                             statusCode = HttpStatusCode.NotFound
>                         };
>                         return Json(json, JsonRequestBehavior.AllowGet);
>                     }
>                 }
>             }
>             catch (Exception ex)
>             {
>                 helper.getErrorInBuild(emp.SubscriberId, "getSku", ex.Message, emp.EmployeeId + emp.EmployeeRole, string.Empty);
>                 JsonCreateResult json = new JsonCreateResult()
>                 {
>                     ex = ex,
>                     id = string.Empty,
>                     Message = string.Empty,
>                     statusCode = HttpStatusCode.InternalServerError
>                 };
>                 return Json(json, JsonRequestBehavior.AllowGet);
>             }
>         }

Я использую lock () и статический ConcurrentDictionary в контроллере asp.net mvc, как вы можете видеть в вышеупомянутом действии. Я не знаю, является ли это причиной проблемы, как будто статическая переменная хранится в данных, а затем ограничить. Это настольное приложение работает на нескольких рабочих столах, и каждый из них генерирует запрос параллельно. Пожалуйста, помогите мне, если кто-нибудь знает об этом исключении и решении для него

Исключение, которое я получил введите описание изображения здесь

...