2012-04-23 10 views
0

プラグインでPostUpdateでHTTP Postを実行しようとすると問題が発生します。あなたがC#の-codeを持っているの下に、私はここで... - エラー「操作がタイムアウトした」CRM 2011 - プラグイン - プラグインでHTTP Postを実行しようとすると操作のタイムアウトエラーが発生する

を取得しています:

     //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); 
         } 
私は応答を取得しようとしているときにエラーが発生し

= > webRequest.GetResponse();!

シンプルな「クラス」ライブラリでコードを試してみましたが、そこには魅力的な機能があります。私が間違っていることはありますか? HTTPポストは、同じドメインにないウェブページにある....

UPDATE: 私はWebクライアントで次の手順を実行したときに同じことが起こる...そして、それは通常の「コンソール」-applicationに動作します:

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. 

答えて

1

それはCRMアセンブリ見つけることができないように見えます:Microsoft.Crm.Setup.DiffBuilder.dllを、さあなたが明示的にメソッドを呼び出すこの何か?もしそうなら、私は、アセンブリがプラグインに登録されているかどうかをチェックします(下記の指示に従います)。そうでなければ、ロールアップ6からこのライブラリに関連するいくつかのエラーがあります。ロールアップは使用していますか?あなたがそれを使用していない場合は、ロールアップを検討することがあります。

プラグインはデータベースまたはディスクに登録されていますか?

ディスクに登録されている場合は、CRMインストールフォルダの/ server/bin/assemblyディレクトリに外部アセンブリが必要です。

データベースに登録されていて、外部カスタムアセンブリを組み込んでいる場合(エラーにより、アセンブリをロードできないため、可能性があります)、データベースに登録する前にアセンブリをILMergeする必要があります。これは、プラグインとして実行されるときではなく、ローカルコンソールアプリケーションで動作する理由を説明します。

このような場合は、あなたがILMergeに以下のようなスクリプトを追跡し、あなたの「組み合わせ」アセンブリを登録することができます -

http://www.2wconsulting.com/2010/11/using-ilmerge-with-crm-plugin-assemblies/

関連する問題