HttpWebRequest.GetRequestStream() не работает в плагине MS Dynamics CRM
Я написал плагин, в котором я пытаюсь получить ответ XML. Это мой код:
// Set the Method property of the request to POST.
string strXMLServer = "xxx";
var request = (HttpWebRequest)WebRequest.Create(strXMLServer);
request.Method = "POST";
// Set the ContentType property of the WebRequest.
request.ContentType = "xyz";
// Assuming XML is stored in strXML
byte[] byteArray = Encoding.UTF8.GetBytes(strXML);
// Set the ContentLength property of the WebRequest.
request.ContentLength = byteArray.Length;
//(LINE 5) Get the request stream
Stream dataStream = request.GetRequestStream();
// Write the data to the request stream.
dataStream.Write(byteArray, 0, byteArray.Length);
// Close the Stream object.
dataStream.Close();
Этот код прекрасно работает, когда он написан в консольном приложении. Но когда я копирую тот же код в библиотеку классов (плагин) и пытаюсь отладить его с помощью профилировщика плагинов, приложение резко останавливается, когда достигает (LINE 5), т.е. Stream dataStream = request.GetRequestStream();
Функция request.GetRequestStream() не работает с плагином, но отлично работает в консоли.
Любая помощь будет оценена:)
заранее спасибо
Примечание: я использую пробную версию Dynamics 365 онлайн
1 ответ
При создании плагина с веб-запросами необходимо учитывать несколько моментов. Во-первых, вам нужно использовать WebClient, поскольку он широко поддерживается продуктами Microsoft.
Во-вторых, ваш URL должен быть DNS-именем, а не IP-адресом, так как это размещаемый плагин в режиме песочницы.
Пример с сайта Microsoft: https://msdn.microsoft.com/en-us/library/gg509030.aspx
Материал для чтения: https://crmbusiness.wordpress.com/2015/02/05/understanding-plugin-sandbox-mode/