Отправка запроса POST с использованием httpClient в пользовательском действии рабочего процесса в Dynamics CRM вызывает ⇐ C#
Отправка запроса POST с использованием httpClient в пользовательском действии рабочего процесса в Dynamics CRM вызывает
У меня есть задача получить данные, созданные в сущности под названием «Донос», затем выполнить некоторую структуризацию и отправить эти данные (в формате строки JSON) в API, поэтому мне нужно сделать запрос POST, все работает нормально, но когда Я хочу отправить запрос на публикацию, он выдает это исключение
Подробности об исключении:
System.Threading.ThreadAbortException HResult=0x80131530 Сообщение=Тема закрыта. Источник=Система Трассировки стека: в System.Net.CookieModule.OnSendingHeaders(HttpWebRequest httpWebRequest) в System.Net.HttpWebRequest.UpdateHeaders() в System.Net.HttpWebRequest.SubmitRequest(ServicePoint servicePoint) в System.Net.HttpWebRequest.BeginGetRequestStream (обратный вызов AsyncCallback, состояние объекта) в System.Net.Http.HttpClientHandler.StartGettingRequestStream (состояние RequestState) в System.Net.Http.HttpClientHandler.PrepareAndStartContentUpload (состояние RequestState) --- Конец трассировки стека из предыдущего местоположения --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача) в System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() в HclsDeclareProspect.DeclareProspect.d__28.MoveNext() в C:\Users\aimad.quouninich\Desktop\Projects\VDN\HclsDeclareProspect\DeclareProspect.cs:line 177 Это исключение изначально было создано в этом стеке вызовов: [Внешний код] HclsDeclareProspect.DeclareProspect.Execute(System.Activities.CodeActivityContext) в DeclareProspect.cs Мой код в методе выполнения:
// Отправляем POST-запрос APIM Конечная точка CanalItem = CanalProvider.Retvieve(service, endpointReference); _trace += string.Format("Конечная точка: {0} \r\n", endpoint.Name); _trace += string.Format("URL конечной точки: {0} \r\n", endpoint.Url); _trace += string.Format("Вход в конечную точку: {0} \r\n", endpoint.Login); _trace += string.Format("Вход в конечную точку: {0} \r\n", endpoint.Password); строка URL = $"{endpoint.Url}/denunciation"; var content = new StringContent(requestJSON.ToString(), Encoding.UTF8, "application/json"); content.Headers.ContentType = новый MediaTypeHeaderValue("application/json"); Клиент HttpClient = новый HttpClient(); client.DefaultRequestHeaders.Add("Apim-Subscription-Key", endpoint.Password); пытаться { результат вар = ждут client.PostAsync(url, content); } поймать (Исключение ex) { Console.WriteLine(ex.Message); } Если я удалил блок try-catch, пользовательский рабочий процесс и pluginRegistrationTool завершатся без какого-либо сообщения об ошибке, а последующие коды строк не будут выполнены.
Я пробовал много вещей, например, использовать httpWebRequest вместо httpClient, но когда я пытался записать поток, возникла эта ошибка:
System.Security.SecurityException HResult=0x8013150A Сообщение = Тип запроса на авторизацию не выполнен: «System.Net.WebPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089». Источник=mscorlib Трассировки стека: в System.Security.CodeAccessSecurityEngine.Check (требование объекта, StackCrawlMark& stackMark, логическое значение isPermSet) в System.Security.CodeAccessPermission.Demand() в System.Net.HttpWebRequest.get_Proxy() в System.Net.WebRequest.GetRequestStreamAsync() в HclsDeclareProspect.DeclareProspect.d__29.MoveNext() в C:\Users\aimad.quouninich\Desktop\Projects\VDN\HclsDeclareProspect\DeclareProspect.cs:line 186 Это исключение изначально было создано в этом стеке вызовов: [Внешний код] HclsDeclareProspect.DeclareProspect.Execute(System.Activities.CodeActivityContext) в DeclareProspect.cs Использование этого кода для HttpWebrequest вместо httpClient:
string url = $"{endpoint.Url}/denunciation";
var content = new StringContent(requestJSON.ToString(), Encoding.UTF8, "application/json"); content.Headers.ContentType = новый MediaTypeHeaderValue("application/json"); вар запрос = (HttpWebRequest)WebRequest.Create (новый Uri (url)); request.ContentType = "приложение/json"; запрос.Метод = "POST"; запрос.Таймаут = 4000; //РС вар itemToSend = JsonConvert.SerializeObject(requestJSON); используя (varstreamWriter = новый StreamWriter(ожидание запроса.GetRequestStreamAsync())) { streamWriter.Write(itemToSend); потокWriter.Flush(); потокWriter.Dispose(); } // Отправляем запрос на сервер и ждем ответа: используя (var ответ = ожидание запроса.GetResponseAsync()) { // Получаем потоковое представление веб-ответа HTTP: используя (var поток = ответ.GetResponseStream()) { вар читатель = новый StreamReader (поток); вар сообщение = Reader.ReadToEnd(); } } Я не знаю, что делать, буду благодарен за любую помощь.
У меня есть задача получить данные, созданные в сущности под названием «Донос», затем выполнить некоторую структуризацию и отправить эти данные (в формате строки JSON) в API, поэтому мне нужно сделать запрос POST, все работает нормально, но когда Я хочу отправить запрос на публикацию, он выдает это исключение
Подробности об исключении:
System.Threading.ThreadAbortException HResult=0x80131530 Сообщение=Тема закрыта. Источник=Система Трассировки стека: в System.Net.CookieModule.OnSendingHeaders(HttpWebRequest httpWebRequest) в System.Net.HttpWebRequest.UpdateHeaders() в System.Net.HttpWebRequest.SubmitRequest(ServicePoint servicePoint) в System.Net.HttpWebRequest.BeginGetRequestStream (обратный вызов AsyncCallback, состояние объекта) в System.Net.Http.HttpClientHandler.StartGettingRequestStream (состояние RequestState) в System.Net.Http.HttpClientHandler.PrepareAndStartContentUpload (состояние RequestState) --- Конец трассировки стека из предыдущего местоположения --- в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача) в System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() в HclsDeclareProspect.DeclareProspect.d__28.MoveNext() в C:\Users\aimad.quouninich\Desktop\Projects\VDN\HclsDeclareProspect\DeclareProspect.cs:line 177 Это исключение изначально было создано в этом стеке вызовов: [Внешний код] HclsDeclareProspect.DeclareProspect.Execute(System.Activities.CodeActivityContext) в DeclareProspect.cs Мой код в методе выполнения:
// Отправляем POST-запрос APIM Конечная точка CanalItem = CanalProvider.Retvieve(service, endpointReference); _trace += string.Format("Конечная точка: {0} \r\n", endpoint.Name); _trace += string.Format("URL конечной точки: {0} \r\n", endpoint.Url); _trace += string.Format("Вход в конечную точку: {0} \r\n", endpoint.Login); _trace += string.Format("Вход в конечную точку: {0} \r\n", endpoint.Password); строка URL = $"{endpoint.Url}/denunciation"; var content = new StringContent(requestJSON.ToString(), Encoding.UTF8, "application/json"); content.Headers.ContentType = новый MediaTypeHeaderValue("application/json"); Клиент HttpClient = новый HttpClient(); client.DefaultRequestHeaders.Add("Apim-Subscription-Key", endpoint.Password); пытаться { результат вар = ждут client.PostAsync(url, content); } поймать (Исключение ex) { Console.WriteLine(ex.Message); } Если я удалил блок try-catch, пользовательский рабочий процесс и pluginRegistrationTool завершатся без какого-либо сообщения об ошибке, а последующие коды строк не будут выполнены.
Я пробовал много вещей, например, использовать httpWebRequest вместо httpClient, но когда я пытался записать поток, возникла эта ошибка:
System.Security.SecurityException HResult=0x8013150A Сообщение = Тип запроса на авторизацию не выполнен: «System.Net.WebPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089». Источник=mscorlib Трассировки стека: в System.Security.CodeAccessSecurityEngine.Check (требование объекта, StackCrawlMark& stackMark, логическое значение isPermSet) в System.Security.CodeAccessPermission.Demand() в System.Net.HttpWebRequest.get_Proxy() в System.Net.WebRequest.GetRequestStreamAsync() в HclsDeclareProspect.DeclareProspect.d__29.MoveNext() в C:\Users\aimad.quouninich\Desktop\Projects\VDN\HclsDeclareProspect\DeclareProspect.cs:line 186 Это исключение изначально было создано в этом стеке вызовов: [Внешний код] HclsDeclareProspect.DeclareProspect.Execute(System.Activities.CodeActivityContext) в DeclareProspect.cs Использование этого кода для HttpWebrequest вместо httpClient:
string url = $"{endpoint.Url}/denunciation";
var content = new StringContent(requestJSON.ToString(), Encoding.UTF8, "application/json"); content.Headers.ContentType = новый MediaTypeHeaderValue("application/json"); вар запрос = (HttpWebRequest)WebRequest.Create (новый Uri (url)); request.ContentType = "приложение/json"; запрос.Метод = "POST"; запрос.Таймаут = 4000; //РС вар itemToSend = JsonConvert.SerializeObject(requestJSON); используя (varstreamWriter = новый StreamWriter(ожидание запроса.GetRequestStreamAsync())) { streamWriter.Write(itemToSend); потокWriter.Flush(); потокWriter.Dispose(); } // Отправляем запрос на сервер и ждем ответа: используя (var ответ = ожидание запроса.GetResponseAsync()) { // Получаем потоковое представление веб-ответа HTTP: используя (var поток = ответ.GetResponseStream()) { вар читатель = новый StreamReader (поток); вар сообщение = Reader.ReadToEnd(); } } Я не знаю, что делать, буду благодарен за любую помощь.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Ошибки пользовательского рабочего процесса CRM в AutoMapper System.TypeInitializationException
Anonymous » » в форуме C# - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-