当我尝试在我的插件中执行HTTP Post时(在PostUpdate中),我遇到了问题。我得到了“操作已经超时” - 错误......
下面是C#代码:
//PUBLISH TO ROBAROV
WebRequest webRequest = WebRequest.Create(newUri);
webRequest.Timeout = 2000;
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.Method = "POST";
byte[] bytes = Encoding.ASCII.GetBytes(parameters);
Stream os = null;
try
{
webRequest.ContentLength = bytes.Length;
os = webRequest.GetRequestStream();
os.Write(bytes, 0, bytes.Length);
}
catch (WebException ex)
{
throw new Exception(ex.Message);
}
finally
{
if (os != null)
{
os.Close();
}
}
//ERROR HAPPENS HERE
string responseText = "";
try
{ // get the response
WebResponse webResponse = webRequest.GetResponse();
StreamReader sr = new StreamReader(webResponse.GetResponseStream());
responseText = sr.ReadToEnd().Trim();
}
catch (WebException ex)
{
throw new Exception("Error with response : " + ex.Message);
}
当我尝试获取响应时发生错误=&gt; webRequest.GetResponse(); <!/ P>
我已经在一个简单的“类”库中尝试了代码,它就像一个魅力!有什么我做错了吗? HTTP Post是指不在同一个域中的网页....
更新: 当我使用webclient执行以下操作时也会发生同样的情况......它可以在正常的“控制台”中运行 - 应用程序:
private string HttpPostTest(string URL)
{
WebClient webClient = new WebClient();
System.Collections.Specialized.NameValueCollection formData = new System.Collections.Specialized.NameValueCollection();
formData["state"] = "yes";
byte[] responseBytes = webClient.UploadValues(URL, "POST", formData);
string Result = Encoding.UTF8.GetString(responseBytes);
return Result;
}
我在“事件查看器”中收到以下错误:
Inner Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Crm.Setup.DiffBuilder, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
答案 0 :(得分:1)
看起来它无法找到CRM程序集:Microsoft.Crm.Setup.DiffBuilder.dll,这是你明确调用方法的东西吗?如果是这样,我会检查程序集是否已注册插件(下面的一些说明)。如果没有,那么从汇总6中存在与该库相关的一些错误,您使用哪个卷起来?如果您不使用,可以考虑汇总7。
您的插件是在数据库中还是在磁盘上注册?
如果在磁盘上注册,则需要在CRM安装文件夹下的/ server / bin / assembly目录中进行外部程序集。
如果它已在数据库中注册并且您包含自定义外部程序集(错误表明无法加载程序集,因此这听起来可能),那么在将数据库注册到数据库之前,您必须ILMerge程序集。这可以解释为什么它适用于本地控制台应用程序,而不是作为插件运行时。
如果是这种情况,那么你可以按照下面的脚本来ILMerge并注册你的'组合'汇编: -
http://www.2wconsulting.com/2010/11/using-ilmerge-with-crm-plugin-assemblies/