CRM 3.0 Calloutが機能していません:イベント:Postcreate、例外:System.InvalidCastException:指定されたキャストが無効です

StackOverflow https://stackoverflow.com/questions/3256341

質問

単純な吹き出しをしようとしているだけで、CRMサーバに保存されているテキストファイルから番号を読み取るには、CRMフォームの値の1つとして使用し、その数を増やしてから書き換えます。テキストファイル。フォームをロードすると、サーバー上のステークアウトは変更されず、イベントビューアにこの無効な無効なキャストエラーメッセージを表示します。私はコードを越えていて、さまざまなことを無効にしましたが、私はCRMの吹き出し c#の両方に真新しいです。これがコードです:

using System;
using System.IO;
using Microsoft.Crm.Callout;

namespace IncrementCompetitorNumber
{
    public class Increment
    {
        public string IncrementNumber()
        {
            string ProjectAutoNumber = "D:\\CRM_Misc\\incrementers\\new_competitornumber.txt";
            string AutoNumber = "0"; 
            string ReturnThis = "0";
            int i = 0;

            lock(this)

            {

            TextReader tr = new StreamReader(ProjectAutoNumber);

            AutoNumber = tr.ReadLine();

            tr.Close();

            ReturnThis = AutoNumber;

            i = Convert.ToInt32(AutoNumber);

            i++;

            AutoNumber = i.ToString();

            TextWriter tw = new StreamWriter(ProjectAutoNumber);

            tw.WriteLine(AutoNumber);

            tw.Close();

            }

            return ReturnThis;
        }
    }
}
.

だから...誰かが私が間違っていることを知っていますか?

役に立ちましたか?

解決

あなたが投稿したCoddeに無効なキャスト例外を引き起こすことは何もありません、例外はどの行に行われますか?

言及するのは、投稿したコードがCRM 3.0コールアウトではないことです。

CRM 3.0 CalloutクラスはCrmCalloutBaseから継承し、それからPostUpdateのようなさまざまなイベントメソッドの1つを概説します。あなたはそこからこのクラスを呼び出していますか?

あなたの2番目のコメントからあなたが間違っていることを知っています。あなたはあなたのクラスを求めることはできませんでした。私はあなたがいくつかの時点で返された文字列で何かをしたいと思いますが、私は今のところ無視されました、そして値は廃棄されるだけです。

次のように変更します。

using System;
using System.IO;
using Microsoft.Crm.Callout;

namespace IncrementCompetitorNumber 
{
    public class Increment : CrmCalloutBase
    {
        public override void PostCreate(CalloutUserContext userContext, CalloutEntityContext entityContext, string postImageEntityXml)
        {
            IncrementNumber();
        }

        private string IncrementNumber()
        {
            string ProjectAutoNumber = "D:\\CRM_Misc\\incrementers\\new_competitornumber.txt";
            string AutoNumber = "0"; 
            string ReturnThis = "0";
            int i = 0;

            lock(this)

            {

            TextReader tr = new StreamReader(ProjectAutoNumber);

            AutoNumber = tr.ReadLine();

            tr.Close();

            ReturnThis = AutoNumber;

            i = Convert.ToInt32(AutoNumber);

            i++;

            AutoNumber = i.ToString();

            TextWriter tw = new StreamWriter(ProjectAutoNumber);

            tw.WriteLine(AutoNumber);

            tw.Close();

            }

            return ReturnThis;
        }
    }
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top