Got an error stating that CRM has identified an infinite loop?
This usually means that the number of iterations reaches a maximum of 8. We can fix this by adding a depth check at the beginning of our plugin code, just after we initialize each of the service objects:IPluginExecutionContext _context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
IOrganizationServiceFactory _factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
_sdk = _factory.CreateOrganizationService(context.UserId);
ITracingService _tracer = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
if (_context.Depth > 1) // if the plugin has run more than once
{
// if so, executes a return statement to cancel out of the plugin
return;
}
Now when we run the plugin, we shouldn’t run into an infinite loop.
NB: You must be careful when using the DEPTH property as there can be more complex scenarios that you may run into.
No comments:
Post a Comment