天天看點

MS CRM 2011 如何從外部連接配接CRM

本文要講解,在CRM應用之外,不具有CRM context的情況下,如何連接配接到CRM,獲得CRM的相關資料。如果你有耐心的話,也可以仔細研究一下SDK中Sample: Simplified Connection Quick Start using Microsoft Dynamics CRM 2011 and Microsoft Dynamics CRM Online。

CRM 2011提供了一個Assembly microsoft.xrm.client.dll,如果從用戶端連接配接CRM的話,可以使用該Assembly中的OrganizationService類。我在本文中以一個控制台程式來示範如何連接配接到CRM 2011。首先程式需要使用到的引用如下圖。有關CRM的引用都可以在sdk的bin檔案夾中找到。

<a href="http://images.cnblogs.com/cnblogs_com/jfzhu/201211/201211022301365640.png"></a>

Program.cs的代碼為:

<a></a>

上面的程式需要從配置檔案讀取ConnectionString。一個範例app.config檔案如下所示。

這段代碼完成的事情很簡單,就是使用OrganizationService類來執行一個WhoAmIRequest。如果成功就表示控制台成功連接配接到了CRM。配置檔案中一共有5個connection string 的樣例。分别用來連接配接:

(1) 使用Office 365 ID 的 CRM Online;

(2) 使用Windows Live ID的 CRM Online;

(3) CRM On-Premises;

(4)CRM On-Premises,使用目前Windows integrated security來登入,是以不需要提供使用者密碼;

(5) 使用了IFD的CRM On-Premises。

上面除了(1)我沒有進行測試,其他四種CRM都通過了該段代碼的測試。在Connection String中,對于CRM Online和IFD On-Premises,URL需要使用Organization Service 的 URL。要檢視CRM的Organization Service的URL,可以在Settings –&gt; Customization –&gt; Customizations –&gt; Developer Resources中檢視

<a href="http://images.cnblogs.com/cnblogs_com/jfzhu/201211/201211022301441226.png"></a>

連接配接CRM Online的時候,需要DeviceID和DevicePassword。很多人不懂DeviceID是幹什麼用的。DeviceID的目的就是注冊一個裝置,使這個裝置可以使用Windows Live ID。當你注冊了這個裝置後,任何使用者就都可以使用這個裝置了。是以如果這個是一個從未注冊過的裝置,你首先要注冊它。關于如何注冊一個裝置,可以使用sdk帶的deviceregistration工具。具體的指令是DeviceRegistration.exe /operation:Register。指令運作成功後,你就可以拷貝生成的Device ID和Device Password了。

<a href="http://images.cnblogs.com/cnblogs_com/jfzhu/201211/201211022301537445.png"></a>

最後再說一下,因為在配置檔案中,我們儲存了使用者登入資訊,這樣很容易洩露使用者名和密碼,是以我再說一下如何對配置檔案的Connection string進行加密。對配置檔案加密可以使用aspnet_regiis.exe工具,Visual Studio自帶這個工具。如果沒有Visual Studio,.Net中也包含了這個工具。可以在%windows root directory%\Microsoft.NET\%Framework\%version 中找到該工具。首先将app.config另存為檔案名為web.config的檔案,假如我将該檔案儲存到我的C:\temp目錄中。檔案的内容為:

運作指令 aspnet_regiis -pef "connectionStrings" "C:\temp",打開web.config檔案,發現加密後的内容為:

然後你可以将該内容拷貝到你的app.config檔案中去。

解密的指令為aspnet_regiis -pef "connectionStrings" "C:\temp"。當然解密與加密必須是在同一電腦上進行的,如果某個惡意使用者擷取了你加密後的app.config檔案,在他自己的電腦上運作該指令是無法解密該檔案的。

總結:從CRM外部連接配接CRM,可以使用上面的CRM“萬能”連接配接程式,基本上各種deployment方式的CRM,都可以使用它來連接配接。該程式使用了Assembly microsoft.xrm.client.dll中的OrganizationService類。你需要在app.config或web.config中配置connection string。最後基于安全性,要對配置檔案的connectionStrings section進行加密。加密可以使用aspnet_regiis 工具。

本文轉自JF Zhu部落格園部落格,原文連結:  http://www.cnblogs.com/jfzhu/archive/2012/11/02/2752006.html  ,如需轉載請自行聯系原作者