Вопрос

У меня есть этот код, который работает в модульном тестировании, но не работает при выполнении в контексте плагина.Что делает код, так это пытается создать зацепку, вызывая веб-сервис crm4.

Когда плагин запускается, я получаю следующее исключение:"HTTP -статус 401:Несанкционированный"

Это код, который инициализирует экземпляр веб-сервиса

CrmAuthenticationToken token = new CrmAuthenticationToken();
token.AuthenticationType = 0;
token.OrganizationName = GetConfig("crm.organisation_name");
_crmService = new CrmService(GetConfig("webservice.crm"));

_crmService.CrmAuthenticationTokenValue = token;
_crmService.UseDefaultCredentials = false;                  
_crmService.PreAuthenticate = false;
_crmService.Credentials = new NetworkCredential(GetConfig("crm.user_username"),
                                                GetConfig("crm.user_password"), 
                                                GetConfig("crm.user_domain"));

У кого-нибудь есть совет, что я могу попробовать дальше?Преимущество создается при запуске теста, и информация о конфигурации в модульном тестировании такая же, как и при запуске плагина приложением.

Это было полезно?

Решение

Вместо того, чтобы создавать экземпляр CrmService самостоятельно, в качестве альтернативы вы можете получить CrmService, получив ссылку на IPluginExecutionContext и вызвав метод CreateCrmService

Пожалуйста, обратитесь к этому Ссылка что касается создания CrmService из IPluginExecutionContext

Here is some code snippet

public void Execute(IPluginExecutionContext context)
{
  // the below code means, the CrmService will be created 
  // by referring to the user account who is registered to 
  // run the CRM Application Pool
  ICrmService crmService = context.CreateCrmService(false);

  // the below code means, the CrmService will be created
  // by taking account the user account who login and run
  // the current plugin
  ICrmService crmService = context.CreateCrmService(true);

  // the below code means, the CrmService will be created
  // by impersonating a valid user
  ICrmService crmService = context.CreateCrmService(new Guid("3F2504E0-4F89-11D3-9A0C-0305E82C3301"));
}

С уважением,

hadi

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top