2

CRM 2011 Web サービスに接続しようとすると、予期しないエラーが発生します。背景は次のとおりです。

接続文字列 (機密情報は削除されています):"ServiceUri=https://crmdomain.com/OrgName/XRMServices/2011/Organization.svc; Url=https://crmdomain.com/OrgName; Username=appusername; Password=hidden"/>

次のように接続を作成します。

  1. conn 文字列を CRMConnection に解析しますvar conn = Microsoft.Xrm.Client.CrmConnection.Parse(connString);(この時点で、CrmConnectionClientCredentials を含むオブジェクトのプロパティは正しいように見えます)。
  2. 組織プロキシを作成します。var orgProxy = new OrganizationServiceProxy(conn.ServiceUri, conn.HomeRealmUri, conn.ClientCredentials, conn.DeviceCredentials);
  3. データ コンテキストを作成します。var context = new MyContext(orgProxy);

この時点で、からデータを取得するcontextと、次の WCF 例外が発生します。

System.ServiceModel.Security.SecurityNegotiationException が発生しました メッセージ =呼び出し元がサービスによって認証されませんでした。 ソース = mscorlib StackTrace: サーバー スタック トレース: System.ServiceModel.Security.IssuanceTokenProviderBase'1.DoNegotiation(TimeSpan タイムアウト) で System.ServiceModel.Security.SspiNegotiationTokenProvider.OnOpen(TimeSpan タイムアウト) で System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen( TimeSpan タイムアウト)

... 等々。

InnerExceptionはと示します。IsSenderFault=TrueIsPredefinedFault=True

何が起きてる?

4

2 に答える 2

0

解決策を見つけました。まず、CRM SDK 2011 の RTW リリースをダウンロードしてください。

接続のコードは次のとおりです。

public static IOrganizationService Service() 
{
    ClientCredentials Credentials = new ClientCredentials(); 
    Credentials.Windows.ClientCredential.UserName ="<username>"; 
    Credentials.Windows.ClientCredential.Password ="<password>"; 

    //This URL needs to be updated to match the servername and Organization for the environment.
    Uri OrganizationUri = new Uri("http://<server name>/<organization name>/XRMServices/2011/Organization.svc"); 
    Uri HomeRealmUri = null; 

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

そしてどうぞ…

乾杯!コーディングをお楽しみください。

于 2011-06-23T12:44:07.353 に答える
0

CRM トレースを使用して、CRM の正確なエラーを絞り込むことができます。専用ツールを使用して CRM トレースをアクティブ化し、例外のソースに関する詳細情報を検索できます。トレース ファイルは非常に急速に大きくなるため、Web サービスの呼び出し中にのみトレースするのが合理的であることに注意してください。

于 2011-05-25T08:06:25.490 に答える