2017-02-07 12 views
2

MicrosoftのXRMツーリングを使用して複数のエンティティ関連付けを作成する簡単なDynamics CRMプラグインを作成しようとしています。MS Dynamics CRMプラグインエラー - [A] CrmWebSvcを[B] CrmWebSvcにキャストできません。

[A]Microsoft.Xrm.Tooling.Connector.CrmWebSvc cannot be cast to [B]Microsoft.Xrm.Tooling.Connector.CrmWebSvc. Type A originates from 'plab_quote, Version=1.0.0.0, Culture=neutral, PublicKeyToken=567d876020387fa5' in the context 'LoadNeither' in a byte array. Type B originates from 'quotePartners, Version=1.0.0.0, Culture=neutral, PublicKeyToken=4f3d8ebbe2fb8cfb' in the context 'LoadNeither' in a byte array. If you contact support, please provide the technical details.

ものがあることである:

public class PartnerPlugin : IPlugin 
{ 
    public static IOrganizationService staticservice; 
    string log = string.Empty; 
    public void Execute(IServiceProvider serviceProvider) 
    { 
     IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); 
     IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); 
     CrmServiceClient crmService = new CrmServiceClient((OrganizationServiceProxy)serviceFactory.CreateOrganizationService(context.UserId)); 
     ... 
    } 
} 

それは私がすでにCRMに登録しているが、この時間は、それは私にそのエラーを与えている他のほとんど同じコードがあります:私は、このクラスをこのようにインスタンス化しています(IPluginExecutionContext context =(...)CreateOrganizationService(context.UserId))) と何も何もしません。同じエラー。 私はDynamics CRM 365を使用しています

もう1つ奇妙なこと:私はすでにこのエラーがありましたが、(私は誓います)コーヒーを飲むのに5分しかかかりませんでした。 もう一度コーヒーを試しましたが、動作しません。何も働いていない。

誰でも?何か案が?

答えて

2

プラグインには、staticservicelogという2つのフィールドがあります。

両方のフィールド(静的およびインスタンス)はスレッドセーフではありません。すべてのプラグインのクラスステージモードの組み合わせに対して、システムは複数の最終的な同時イベントに使用されているインスタンスを作成します。

競合状態によって、スレッドがお互いのフィールドを上書きしてしまい、予期しない結果につながります。

+0

私はちょうどあなたが言ったことを持っている:) –

0

私は最後に、同じステップで別のプラグインに同じ名前の変数をすでにインスタンス化していたということに気付きました! これはエラーです:)

関連する問題