私のプロジェクトでは、いくつかのリクエストなどで使用されるカスタムエンティティのハンドラがあります。このハンドラ/エンティティは多くのプラグイン/ロガー/トレーサなどで参照されています。ユーザーを呼び出すのではなく、管理者のコンテキストでまた、admin guidの上に作成されたサービスを渡す代わりに、次のようになります。プラグイン内部Dynamics 365 - IOrganizationServiceを使用してOrganizationServiceProxyを作成する
----- -----
IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
var adminOrganizationService = factory.CreateOrganizationService(Guid.Parse("~ADMINGUID~"));
MyEntityHandler myEntityHandler = new MyEntityHandler(adminOrganizationService);
// Use myEntityHandler
// What i do want to do is, calling my entity handler with the service of calling user , which looks like;
MyEntityHandler myEntityHandler = new MyEntityHandler(factory.CreateOrganizationService(context.UserId));
// Use myEntityHandler
と私のエンティティハンドラ内、OrganizationServiceProxyへの引数として渡されたサービスを変換し、admin GUIDにその発信者番号を変更したり、単に変更OrganizationServiceProxyに最初にキャストすることによって、IOrganizationService "サービス"のCallerID。ハンドラ内
-----は-----
private IOrganizationService service;
public MyEntityHandler(IOrganizationService organizationService)
{
// This is what i have tried.
service = organizationService;
(service as OrganizationServiceProxy).CallerId = Guid.Parse("~ADMINGUID~");
}
私が手に '例外:System.NullReferenceException:オブジェクト参照がオブジェクトインスタンスに設定されていません。'鋳造部分にある。 これは基本的に、このようなことをする方法があります。私は自分自身を十分に説明してくれてありがとうと思います...
あなたの助けに感謝、私はこのトピックについてのあなたの視点を検討します。 –