我们需要限制从Outlook向CRM 2011自动完成的一些删除操作,同时我们等待第三方插件中的错误修复。是否可以在Dynamics CRM 2011内部部署一个插件,该插件只为Outlook客户端执行(脱机未使用)或者如果从Outlook触发插件则检查执行?
在CRM 4.0中,曾经有一个CallerOrigin属性,至少提供了一些关于此的信息,但该属性现在似乎只是CRM 2011模型的内部属性。
答案 0 :(得分:3)
我通过反射访问CallerOrigin
(它仍在那里,但未在SDK库中公开)。
下面的代码是我的代码的简短版本,没有任何验证或空检查(即非生产代码)只是为了展示它如何工作在几行:
object callerOrigin = context.GetType().GetProperty("CallerOrigin").GetValue(context, null);
return callerorigin.GetType().Name; // will return "WebServiceApiOrigin" if called from outlook or web services
答案 1 :(得分:0)
在编写插件以在Outlook中脱机运行时,您应该注意IExecutionContext上的两个属性:
IExecutionContext.IsExecutingOffline表示插件是否在脱机时在Outlook中运行,并且:
IExecutionContext.IsOfflinePlayback表示当客户端再次连接到服务器并将更改与服务器同步时,在Outlook客户端脱机时进行更改时会触发插件。