-1

このコードを置き換えて拡張し、認証資格情報でパスワードとユーザー名を使用するにはどうすればよいですか。mscrm sdk の例を分析してこれを解決しようとしていましたが、私は c# プログラマーではないため運がありませんでした。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.ServiceModel.Description;
using Microsoft.Xrm.Sdk.Client;
using System.Net;
using Microsoft.Xrm.Sdk;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void id_Click(object sender, EventArgs e)
    {

        AuthenticationCredentials authCredentials = new AuthenticationCredentials();

        //Authenticate using credentials of the logged in user;       
        ClientCredentials Credentials = new ClientCredentials();


        Uri OrganizationUri = new Uri("http://Crm/Contoso/XRMServices/2011/Organization.svc");
        Uri HomeRealmUri = null;

        //OrganizationServiceProxy serviceProxy;       
        using (OrganizationServiceProxy serviceProxy = new OrganizationServiceProxy(OrganizationUri, HomeRealmUri, Credentials, null))
        {
            IOrganizationService service = (IOrganizationService)serviceProxy;

            //Instantiate the contact object and populate the attributes.
            Entity contact = new Entity("contact");
            contact["firstname"] = txtFirstName.Text.ToString();
            contact["lastname"] = txtLastName.Text.ToString();
            Guid newContactId = service.Create(contact);
        }
    }
}

ありがとう!

4

2 に答える 2

2

ここでは、Active Directory 認証を使用していると仮定します。MSDNには、すべての認証方法の接続を作成する方法を示すかなり長い例があります。

変更するだけでよいと思います:

ClientCredentials Credentials = new ClientCredentials();

に:

ClientCredentials Credentials = new ClientCredentials();
Credentials.UserName.UserName = "domain\username";
Credentials.UserName.Password = "password";
于 2012-09-08T17:34:06.180 に答える
0

可能であればデフォルトの資格情報を使用することをお勧めします。不可能な場合は、次のようなものを使用します。

ClientCredentials creds = new ClientCredentials();
creds.Windows.ClientCredential = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["username"], ConfigurationManager.AppSettings["password"], ConfigurationManager.AppSettings["domain"]);

この方法の明らかな欠点は、パスワードがクリアテキストであることですが、パスワードやユーザーを変更するために再コンパイルする必要がないという利点があります。

于 2012-09-16T11:11:36.860 に答える