Отправка запроса POST с использованием httpClient в пользовательском действии рабочего процесса в Dynamics CRM вызывает C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Отправка запроса POST с использованием httpClient в пользовательском действии рабочего процесса в Dynamics CRM вызывает

Сообщение Anonymous »


У меня есть задача получить данные, созданные в сущности под названием «Донос», затем выполнить некоторую структуризацию и отправить эти данные (в формате строки 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(); } } Я не знаю, что делать, буду благодарен за любую помощь.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»