【发布时间】:2014-02-10 09:48:01
【问题描述】:
我正在尝试将 MS CRM 2011 插件执行上下文序列化为 JSON 以便稍后对其进行分析(我需要找到错误的问题,并且我希望有更多人类可读形式的上下文转储)。
但我所有的尝试都会导致序列化错误,如下所示:
Newtonsoft.Json.JsonSerializationException: Error getting value from 'ServiceProvider' on 'Plugin+LocalPluginContext
插件由 Visual Studio 插件生成。代码放在基类Plugin 中,如下所示:
internal void Trace(string message)
{
if (string.IsNullOrWhiteSpace(message) || this.TracingService == null)
{
return;
}
if (this.PluginExecutionContext == null)
{
this.TracingService.Trace(message);
}
else
{
this.TracingService.Trace(
"{0}, Correlation Id: {1}, Initiating User: {2}",
message,
this.PluginExecutionContext.CorrelationId,
this.PluginExecutionContext.InitiatingUserId);
var jss = new JsonSerializerSettings();
var dcr = new DefaultContractResolver();
dcr.DefaultMembersSearchFlags |= System.Reflection.BindingFlags.NonPublic;
jss.ContractResolver = dcr;
this.TracingService.Trace("Local Context Dump: {0}", JsonConvert.SerializeObject(this, jss));
}
}
我认为问题在于一般方法。 LocalContext 是一个非常复杂的对象。 JSON.NET 无法序列化某些类型。但我无法确定这个限制。
您能帮我纠正一下方法吗?
【问题讨论】:
标签: c# json plugins dynamics-crm-2011 json.net