2015-11-20 1 views
0

У меня есть плагин 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"); 
        } 
       } 
      } 

ответ

0

Вы используете плагин на интернете-организациях? В этом случае вы не можете установить организацию в режим, когда вы регистрируете сборку.

+0

Привет, Марко, это встроенная версия CRM, я установил режим None, но мне все равно не повезло, поскольку режим Sandbox не может получить доступ к файловой системе, я получаю ту же ошибку в любом случае, любую идею? – Papi

+0

Я вижу, что вы используете Console.WriteLine в плагине, который не будет сортировать никакого эффекта и что вы пытаетесь получить доступ к C: \ Team CRM \ Warp.csv. Это ваш локальный диск или сервер? Я сомневаюсь, что у CRM есть права доступа к этому местоположению даже вне песочницы. – MaPi

+0

Это на моей локальной машине, и да, я также добавил его на сервер, так что вы предлагаете, как еще я могу заставить это работать? – Papi

1

Предполагая, что это синхронный (возможно, асинхронный запуск на другом сервере, в зависимости от вашего развертывания), проверьте, что учетная запись IIS у пользователя запущена, так как имеет права на эту папку. Если это не так, вы получите ошибку разрешения файла, которую видите.