0

プラグイン (PostUpdate) で HTTP Post を実行しようとすると問題が発生します。「操作がタイムアウトしました」というエラーが表示されます...

以下に 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);
                        }

応答を取得しようとするとエラーが発生します => webRequest.GetResponse();!

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

更新:Webクライアントで次のことを行うと同じことが起こります...そして、通常の「コンソール」アプリケーションで動作します:

    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.
4

1 に答える 1

1

CRM アセンブリが見つからないようです: Microsoft.Crm.Setup.DiffBuilder.dll、これは明示的にメソッドを呼び出すものですか? もしそうなら、アセンブリがプラグインに登録されているかどうかを確認します(以下のいくつかの手順)。そうでない場合は、ロールアップ 6 のこのライブラリに関連するエラーがいくつかあります。どのロールアップを使用していますか? ロールアップ 7 を使用していない場合は、ロールアップ 7 を検討してください。

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

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

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

この場合、以下のようなスクリプトに従って ILMerge を実行し、「結合された」アセンブリを登録できます。

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

于 2012-04-25T10:27:12.137 に答える