1

CRM 4.0 から連絡先のリストを取得しようとしていますが、認証に問題があります。私が読んだことから、すべてのクリネットをリストする方法は、ExportAllXmlRequest から返された XML を解析することです。

問題は、http://crmserver/MSCRMServices/2007/spla/CRMDiscoveryService.asmxを参照すると、401.2 の権限がなく、認証を求めるプロンプトが表示されないことです。Visual Studio を介して Web 参照を追加すると、資格情報を受け入れないパスワード プロンプトが表示されます。また、次のコードで認証を試みましたが、どちらも機能しません。サーバーでは、Windows 認証と匿名認証の両方が有効になっています。

CrmService svc = new CrmService();
// this doesn't work
svc.UseDefaultCredentials = true;

// this doesn't work either
svc.Credentials = new NetworkCredential("myuser", "password", "mydomain");
svc.Credentials= System.Net.CredentialCache.DefaultCredentials;
ExportAllXmlRequest request = new ExportAllXmlRequest();

ExportAllXmlResponse response = (ExportAllXmlResponse)svc.Execute(request);
string resp=string.Empty;
using (StreamReader reader = new StreamReader(response.ExportXml)) {
    resp = reader.ReadToEnd();
}
return resp;

1) CRM から連絡先を一覧表示する簡単な方法と、2) この認証の問題を解決するためにできることはありますか?

4

3 に答える 3

2

コードが正しくありません。メタデータサービスCRMサービスを混在させています。

CRMデータを操作するには、CRMサービスを使用する必要があります。Discovery Serviceは、CRM展開のイエローページのようなものです。

// Set up the CRM Service.
var token = new CrmAuthenticationToken();
token.AuthenticationType = 0; 
token.OrganizationName = "{yourorgname}";

var service = new CrmService();
service.Url = "http://<servername>:<port>/mscrmservices/2007/crmservice.asmx";
service.CrmAuthenticationTokenValue = token;
service.Credentials = System.Net.CredentialCache.DefaultCredentials;

これにより、CRMサービスへの接続が作成されます。RetrieveMultipleデータを取得するには、CrmServiceのメソッドを使用できます。

 // Create the QueryExpression object.
 var query = new QueryExpression();

 // Set the properties of the QueryExpression object.
 query.EntityName = EntityName.contact.ToString();
 query.ColumnSet = new AllColumns();

 // Retrieve the contacts.
 BusinessEntityCollection contacts = service.RetrieveMultiple(query);
于 2011-05-09T20:02:49.137 に答える
1

これは、エンティティ レコードを取得するために必要な方法ではありません。ExportAllXmlRequest は、CRM 環境のカスタマイズ情報を取得しますが、実際のレコードはありません。RetrieveMultipleRequest (sdk リンク: http://msdn.microsoft.com/en-us/library/bb929303.aspx ) が必要になります。

認証の問題に関して、CRM サイトは IE の信頼済みサイトまたはイントラネット サイトのリストに含まれていますか?

于 2011-05-06T15:15:30.813 に答える
0

上記のckellerの答えは、プラグイン内で作業している場合、または基になるSQLデータベースにアクセスできないCRM Onlineバージョンで作業している場合に適しています. これがオンプレミスのインストールで、CRM テーブルへの SQL サーバー アクセス権がある場合は、多くの場合、SQL テーブルまたはビューに直接クエリを実行してエンティティ情報を読み取る方が高速で簡単です。次の SQL クエリを実行し、SQL データ リーダーまたはデータ テーブルで結果を読み取るだけです。

SELECT * FROM OrgName_MSCRM.dbo.FilteredContact
于 2011-05-28T20:21:35.547 に答える