2

Dynamics 2011 で所有者名を "test_user" に設定してアクティビティ レコードを作成しようとしています。代わりに、以下のコードは、Dynamics API へのアクセスに使用される資格情報を取得しています。パスワードを渡さずに「test_user」ユーザーになりすます方法はありますか? ありがとうございました。

string TargetCrmService = ConfigurationManager.AppSettings["TargetCrmService"];
string UserName = ConfigurationManager.AppSettings["UserName"];
string Domain = ConfigurationManager.AppSettings["Domain"];
string Password = ConfigurationManager.AppSettings["Password"];

Uri organizationUri = new Uri("http://CRMDEV/XRMServices/2011/Organization.svc");
Uri homeRealmUri = null;
ClientCredentials credentials = new ClientCredentials();

credentials.UserName.UserName = Domain + "\\" + UserName;
credentials.UserName.Password = Password;

OrganizationServiceProxy orgProxy = new OrganizationServiceProxy(organizationUri, homeRealmUri, credentials, null);

var _userId = (from u in orgProxy.CreateQuery<SystemUser>()
           where u.FullName == "Kevin Cook"
           select u.SystemUserId.Value).FirstOrDefault();

IOrganizationService _service = (IOrganizationService)orgProxy;
_service.CallerId = _userId;


try
{
    //Entity activity = new Entity("activitypointer");

    Entity activity = new Entity("appointment");
    activity["subject"] = "Test Meeting 1";
    activity["description"] = "Test Description";
    activity["scheduledstart"] = DateTime.Now;
    activity["scheduledend"] = DateTime.Now.AddMinutes(30);
    activity["createdbyname"] = "test_user";
    activity["modifiedbyname"] = "test_user";
    activity["createdbyname"] = "test_user";
    activity["owneridname"] = "test_user";

    Guid id = _service.Create(activity);
    Console.WriteLine("id: " + id);
}
catch (Exception ex)
{
    //MessageBox.Show(ex.Message);
}

変更されたコード

http://msdn.microsoft.com/en-us/library/gg309629.aspxの例に基づく

var _userId = (from u in orgProxy.CreateQuery<SystemUser>()
           where u.FullName == "Kevin Cook"
           select u.SystemUserId.Value).FirstOrDefault();
4

1 に答える 1

2

CRM でエンティティの所有者 ID を設定するには、2 つの方法があります。

  1. AssignRequestを使用して、作成後にレコードを更新します。
  2. OrganizationServiceProxy、CallerId で偽装を使用して、作成時に所有者にしたい特定のユーザーを使用します。CRM SystemUserId だけで、なりすましを行うのにパスワードは必要ありません
于 2013-02-25T19:58:02.927 に答える