Archive

Posts Tagged ‘Organization.svc’

Value cannot be null – Instanciando OrganizationServiceProxy

December 30, 2015 Leave a comment

Cenário:

Meu primeiro post sobre Microsoft CRM! Smiley de boca aberta

Nas últimas semanas venho trabalhando em análise e melhoria de performance de alguns serviços que fazem integração entre uma aplicação legada e o Microsoft CRM 2015, usando IFD.

Os serviços estão deveras lentos. Nesse processo de análise estamos montando aplicações de testes paralelas aos serviços… e nessas aplicações estamos simulando maneiras diferentes de instanciar o serviço de comunicação com o CRM.

Para isso estou utilizando o SDK do CRM como base de apoio aos testes: http://go.microsoft.com/fwlink/?LinkID=512122.

ERRO:

Value cannot be null.

SOLUÇÃO:

Na correria… acabei copiando e colando uma url que deveria ser diferente!

No SDK do CRM, há um tipo de autenticação se usar os “Helpers” que existem no SDK. Nesse exemplo ele pede para instanciar assim:

 

#region Class Level Members

// To get discovery service address and organization unique name,

// Sign in to your CRM org and click Settings, Customization, Developer Resources.

// On Developer Resource page, find the discovery service address under Service Endpoints and organization unique name under Your Organization Information.

private String _discoveryServiceAddress = "https://MyCompany/XRMServices/2011/Discovery.svc";

private String _organizationUniqueName = "OrganizationUniqueName";

// Provide your user name and password.

private String _userName = "username@mydomain.com";

private String _password = "password";

// Provide domain name for the On-Premises org.

private String _domain = "mydomain";

#endregion Class Level Members

 

E aí ao trocar a url, eu copiei e colei uma url errada… coloquei a url “Organization.svc” ao invés da url correta “Discovery.svc”.

Ao colocar a url errada e tentar instanciar o OrganizationServiceProxy, dá o erro mencionado acima nesse método abaixo:

 

/// <summary>

/// Discovers the organizations that the calling user belongs to.

/// </summary>

/// <param name="service">A Discovery service proxy instance.</param>

/// <returns>Array containing detailed information on each organization that

/// the user belongs to.</returns>

public OrganizationDetailCollection DiscoverOrganizations(

IDiscoveryService service)

{

if (service == null) throw new ArgumentNullException("service");

RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest();

RetrieveOrganizationsResponse orgResponse =

(RetrieveOrganizationsResponse)service.Execute(orgRequest);

return orgResponse.Details;

}

 

Após colocar a URL correta “Discovery.svc” , tudo funcionou perfeitamente.

Abraço!