2013-03-06 129 views
1

我正在編寫一個應用程序,我必須從ASP.NET代碼登錄CRM 2011服務器。我很快找到了這篇文章:從ASP.NET登錄到CRM

http://msdn.microsoft.com/en-us/library/cc156363.aspx

我遇到的問題是在那篇文章這段代碼:

//Create the Service 
CrmService service = new CrmService(); 
service.Credentials = System.Net.CredentialCache.DefaultCredentials; 
service.CrmAuthenticationTokenValue = token; 
service.Url = crmurl; 

的Visual Studio無法解析CrmService。所以我試圖給這個項目添加一個Web引用,並將Web引用指向我正在使用的CRM服務。我從CRM中的設置 - >自定義中獲得的URL,並且正在使用組織服務端點。但是,在添加引用後,CrmService仍然無法解析。我究竟做錯了什麼?

回答

1

首先,您已經鏈接了CRM 4 MSDN文章,有些內容已更改,因此您可能需要嘗試下面的內容:Authenticate Users with Microsoft Dynamics CRM Web Services

然後,您也可以嘗試CrmConnection類,它的Microsoft.Xrm.Client中的輔助函數庫。這意味着您可以使用連接字符串方法來與CRM進行身份驗證(並讓班級照顧所有艱苦工作)。

var connection = CrmConnection.Parse("Url=http://crm.contoso.com/xrmContoso; Domain=CONTOSO; Username=jsmith; Password=passcode;"); 
var service = new OrganizationService(connection); 
var context = new CrmOrganizationServiceContext(connection); 

您還可以保留連接字符串config文件使生活變得更加容易。

相關的主題文章:

+0

感謝您的指點。我正在嘗試使用「使用Microsoft Dynamics CRM Web服務驗證用戶」。鏈接在上面,但是VS無法解析以下行中的符號SystemUser: SystemUser systemUser = organizationProxy.Retrieve .... 即使我添加了示例中列出的所有庫和引用。 SystemUser中定義了哪些名稱空間? – 2013-03-07 21:55:06

+0

您將需要生成使用該類的早期綁定類。您需要針對您的CRM組織運行svcutil。那或者你可以使用後期綁定的Entity類。檢查MSDN的細節。 – 2013-03-07 23:29:48

+0

這似乎工作。感謝大家的幫助。 – 2013-03-08 20:10:04

0

其實,在登錄過程在很大程度上依賴於您指定的認證供應商。我目前正在以博士的方式在我的博客上構建這些信息,因此歡迎您查看並嘮叨是否太過科技。

目前有四種這樣的方式。

  • 活動目錄
  • Live ID的
  • 聯合會
  • 在線聯合會

哪個是適合你的情況,你應該已經知道了。如果沒有,那麼就在幾天前上傳了代碼。

using Microsoft.Xrm.Sdk; 
using Microsoft.Xrm.Sdk.Client; 
... 
public AuthenticationProviderType GetAuthenticationProviderType(Uri address) 
{ 
    IServiceManagement<IOrganizationService> organizationServiceManagement 
    = ServiceConfigurationFactory.CreateManagement 
     <IOrganizationService>(address); 
    return organizationServiceManagement.AuthenticationType; 
} 

假設你瞄準的是AD,那麼你很幸運。這是最簡單的。

Uri organizationUrl = new Uri("http ... Organization.svc"); 
OrganizationServiceProxy organizationService = new OrganizationServiceProxy(
    organizationUrl, null, null, null); 

如果您正在瞄準Live ID - 那很吝嗇。我仍然試圖建立一個可以理解的例子。 MSDN上的那些人太沉重和混亂。至少當一個人像我一樣密密麻麻和懶惰的時候。更多信息在提到但未公開的位置。

+0

您應該發佈直接鏈接。 – 2013-03-07 00:56:17

+0

此外,重新:MSDN樣本,我同意他們非常沉重,很難深入到相關的細節。 – 2013-03-07 01:00:19

+0

@JamesWood你指的是哪些鏈接?如果是MSDN,Daryl已經覆蓋了它(但我可以從他那裏剝離)。如果是在我的博客上,我不喜歡(害怕被指責爲自我推銷)。或者你的意思完全不同? – 2013-03-07 06:54:29