0

由於與CRM 4.0的兼容性,我必須在DYNAMICS CRM 2011中使用CrmDiscoveryService.asmx。我impemented IFD鑑別算法,現在它不工作:401錯誤,如果我從我的ASP.NET應用程序連接。到CrmDiscoveryService.asmx(CRM 2011)

我可以從瀏覽器成功連接我CrmDiscoveryService.asmx(允許匿名連接) 網址:HTTPS://internalcrm.organme> .COM:444/mscrmservices/2007/spla/crmdiscoveryservice.asmx

但是,如果我嘗試從ASP.NET中獲取連接到相同的URL - 我收到401錯誤。 代碼:

RetrieveCrmTicketRequest crmTicketRequest = new RetrieveCrmTicketRequest(); 
crmTicketRequest.OrganizationName = OrgUniqueName; 
crmTicketRequest.UserId = "bnet"+"\\"+"izz"; 
crmTicketRequest.Password = "pass"; 
CrmDiscoveryService discoveryService = serviceHandler.CreateCrmDiscoveryService(crmDiscoveryServiceUrl); 
discoveryService.UseDefaultCredentials = true; 
RetrieveCrmTicketResponse crmTicketResponse = 
(RetrieveCrmTicketResponse)discoveryService.Execute(crmTicketRequest); 

//Trust all certificates 
System.Net.ServicePointManager.ServerCertificateValidationCallback = 
((sender, certificate, chain, sslPolicyErrors) => true); 

回答

0

可能是很有意義從樣品Using the CrmDiscoveryService Web Service: IFD

// Configure an instance of the CrmDiscoveryService Web service proxy. 
CrmDiscoveryService disco = new CrmDiscoveryService(); 
disco.Url = "https://localhost/MSCRMServices/2007/SPLA/CrmDiscoveryService.asmx"; 

//Retrieve a list of available organizations from the CrmDiscoveryService Web service. 
RetrieveOrganizationsRequest orgRequest = new RetrieveOrganizationsRequest(); 
// Substitute an appropriate domain, username, and password here. 
orgRequest.UserId = domain + "\\" + username; 
orgRequest.Password = password; 
RetrieveOrganizationsResponse orgResponse = (RetrieveOrganizationsResponse)disco.Execute(orgRequest); 

//Find the target organization. 
OrganizationDetail orgInfo = null; 

foreach (OrganizationDetail orgdetail in orgResponse.OrganizationDetails) 
{ 
    if (orgdetail.OrganizationName.Equals("AdventureWorksCycle")) 
    { 
     orgInfo = orgdetail; 
     break; 
    } 
} 

// Check whether a matching organization was not found. 
if (orgInfo == null) 
    throw new Exception("The specified organization was not found."); 

//Retrieve a CrmTicket from the CrmDiscoveryService Web service. 
RetrieveCrmTicketRequest ticketRequest = new RetrieveCrmTicketRequest(); 
ticketRequest.OrganizationName = orgInfo.OrganizationName; 
ticketRequest.UserId = domain + "\\" + username; 
ticketRequest.Password = password; 
RetrieveCrmTicketResponse ticketResponse = 
    (RetrieveCrmTicketResponse)disco.Execute(ticketRequest); 
+0

感謝您的設想,但沒有成功。我有同樣的錯誤。 – Igor

+0

您也可以嘗試在代碼中設置用戶憑據,但不要使用'discoveryService.UseDefaultCredentials = true;' – paramosh

+0

好的,我會試試,謝謝 – Igor

0

中獲取可用的組織的名單,像作爲paramosh說的話,嘗試發現服務設置憑據啓動太:

discoveryService.Credentials = new System.Net.NetworkCredential(「izz」,「password」,「bnet」);

相關問題