1

我試圖連接到動態365在內部部署與OData的客戶端.NET身份驗證動態365在前提

我試圖通過基本身份驗證來驗證,但是這是行不通的。

var c = new Microsoft.Dynamics.CRM.System(new Uri("https://mycrm01/crm/api/data/v8.2/")); 

c.SendingRequest2 += (o, requestEventArgs) => { 
    var creds = username + ":" + password; 
    var encodedCreds = Convert.ToBase64String(Encoding.ASCII.GetBytes(creds)); 
    requestEventArgs.RequestMessage.SetHeader("Authentication", "Basic" + encodedCreds); 
}; 

var contacts = c.Contacts.Where(x => x.Firstname=="testuser"); 
foreach (var contact in contacts) 
{ 

} 

我收到的錯誤是:HTTP錯誤401 - 未經授權:訪問被拒絕

有人可以幫助我如何做到這一點?

回答

1

通常我只使用JavaScript的OData客戶端。在使用.NET時,我使用通過CrmServiceClient類提供身份驗證和訪問的SDK庫。

要使用的OData客戶端從C#,本文概述了各種驗證方法:https://msdn.microsoft.com/en-us/library/mt595798.aspx

的Web API認證模式

有使用 的Web API時管理認證三種不同的方式。在網頁資源中使用JavaScript

當您在HTML網頁資源中使用帶有JavaScript的Web API時, 會形成腳本或功能區命令,您不需要包含任何代碼 進行身份驗證。在每種情況下,用戶已經由應用程序認證了 ,認證由 應用程序管理。使用本地部署

當您使用Web API進行本地部署時,您必須包含 用戶的網絡憑據。下面的例子是C#功能 將返回一個HttpClient的配置對於一個給定用戶的網絡 憑據:C#

private HttpClient getNewHttpClient(string userName,string 
password,string domainName, string webAPIBaseAddress) { 
HttpClient client = new HttpClient(new HttpClientHandler() { Credentials = new NetworkCredential(userName, password, domainName) 
}); 
client.BaseAddress = new Uri(webAPIBaseAddress); 
client.Timeout = new TimeSpan(0, 2, 0); 
return client; 
} 

使用Microsoft Dynamics 365(在線)或面向Internet的部署

當您使用Web API for Dynamics 365(聯機)或內部部署 面向Internet的部署(IFD),必須使用OAuth,如 中所述使用OAuth連接到Microsoft Dynamics 365 Web服務。

如果您正在創建使用JavaScript 可以使用adal.js庫與 跨來源資源共享中使用OAuth描述單個頁面應用程序連接到 的Microsoft Dynamics 365單頁應用(SPA) 。