У меня есть плагин CRM, который запускается при обновлении поля в форме, тогда плагин должен использовать возможности импорта SDK для импорта записей CSV в Динамика, я получаю ошибку foloowingОшибка модуля плагина CRm Dynamics 2013, запрос на разрешение типа xxx
запрос разрешения типа 'System.Security.Permissions.FileIOPermission, mscorlib, Version = 4.0.0.0, культура = нейтральной, PublicKeyToken = b77a5c561934e089' не удалось .
Я зарегистрировал плагин в режиме изоляции, установленный в NONE, а не в Sandbox, но я все еще получаю сообщение об ошибке, любые идеи относительно того, почему это происходит и как я могу это решить. Он не работает в части ImportFile, которая инкапсулирована в функцию ImportData.
Пожалуйста, смотрите мой код плагиной ниже
public void Execute(IServiceProvider serviceProvider)
{
ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
if (context == null)
{
throw new ArgumentNullException("loaclContext");
}
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
Entity supplyClaimsEntity = (Entity)context.InputParameters["Target"];
if (supplyClaimsEntity.LogicalName != "new_supplierclaimsupdate")
{
return;
}
IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
IOrganizationService service = serviceFactory.CreateOrganizationService(context.InitiatingUserId);
string entityBeginUpload = "Start Upload";
try
{
string filePath = (@"C:\Team CRM\Warp.csv");
ImportData(service, new_topproducts.EntityLogicalName, filePath);
}
catch (FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault> ex)
{
Console.WriteLine("The application terminated with an error.");
Console.WriteLine("Timestamp: {0}", ex.Detail.Timestamp);
Console.WriteLine("Code: {0}", ex.Detail.ErrorCode);
Console.WriteLine("Message: {0}", ex.Detail.Message);
Console.WriteLine("Inner Fault: {0}",
null == ex.Detail.InnerFault ? "No Inner Fault" : "Has Inner Fault");
}
catch (System.TimeoutException ex)
{
Console.WriteLine("The application terminated with an error.");
Console.WriteLine("Message: {0}", ex.Message);
Console.WriteLine("Stack Trace: {0}", ex.StackTrace);
Console.WriteLine("Inner Fault: {0}",
null == ex.InnerException.Message ? "No Inner Fault" : ex.InnerException.Message);
}
catch (System.Exception ex)
{
Console.WriteLine("The application terminated with an error.");
Console.WriteLine(ex.Message);
// Display the details of the inner exception.
if (ex.InnerException != null)
{
Console.WriteLine(ex.InnerException.Message);
FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault> fe = ex.InnerException
as FaultException<Microsoft.Xrm.Sdk.OrganizationServiceFault>;
if (fe != null)
{
Console.WriteLine("Timestamp: {0}", fe.Detail.Timestamp);
Console.WriteLine("Code: {0}", fe.Detail.ErrorCode);
Console.WriteLine("Message: {0}", fe.Detail.Message);
Console.WriteLine("Trace: {0}", fe.Detail.TraceText);
Console.WriteLine("Inner Fault: {0}",
null == fe.Detail.InnerFault ? "No Inner Fault" : "Has Inner Fault");
}
}
}
Привет, Марко, это встроенная версия CRM, я установил режим None, но мне все равно не повезло, поскольку режим Sandbox не может получить доступ к файловой системе, я получаю ту же ошибку в любом случае, любую идею? – Papi
Я вижу, что вы используете Console.WriteLine в плагине, который не будет сортировать никакого эффекта и что вы пытаетесь получить доступ к C: \ Team CRM \ Warp.csv. Это ваш локальный диск или сервер? Я сомневаюсь, что у CRM есть права доступа к этому местоположению даже вне песочницы. – MaPi
Это на моей локальной машине, и да, я также добавил его на сервер, так что вы предлагаете, как еще я могу заставить это работать? – Papi