1

こんにちは、次のコードを使用して別の人の資格情報を使用して、コア サービスを介して Tridion に接続しようとしています。

using (ChannelFactory<ISessionAwareCoreService> factory = 
  new ChannelFactory<ISessionAwareCoreService>("netTcp_2011"))
{
  NetworkCredential networkCredential = 
   new NetworkCredential("username", "password", "domain");
  factory.Credentials.Windows.ClientCredential = networkCredential;
  ISessionAwareCoreService client = factory.CreateChannel();
  Console.WriteLine(client.GetCurrentUser().Title);

しかし、私はエラーになっています:

Could not connect to net.tcp://localhost:2660/CoreService/2011/netTcp. The connection attempt lasted for a time span of 00:00:01.0310784. TCP error code 10061: No connection could be made because the target machine actively refused it 127.0.0.1:2660
4

1 に答える 1

4

あなたの質問に答えると、リモート クライアントに netTcp を使用できるのは、ポート 2660 が開いている場合のみです。そのため、ファイアウォールの制限が不明な場合は、wsHttp または basicHttp バインディングを使用することをお勧めします。

さらに、私が得ていないことの 1 つは、Session Aware Core Service Client を使用していて、パスワードを入力しようとしているということです。私の意見では、Session Aware Core Service Client は、ユーザー アカウントが SDL Tridion に対して既に認証されている状況、または有効な SDL を介して Core Service を呼び出している場合に使用することになっています。 Tridion 偽装ユーザー。その上で、ユーザー名だけで有効な SDL Tridion ユーザー名へのコア サービス呼び出しを偽装します (パスワードは必要ありません)。SessionAwareCoreServiceClient の資格情報 (ユーザー名とパスワード) を提供できますが、有効な SDL Tridion 偽装ユーザーの資格情報を提供する必要があり、さらに偽装する必要があります。

ここで説明されているように、通常の Core Service Client を使用してみることをお勧めします: Get Core Service Client without config file

または、Session Aware Core Service Client の使用を主張する場合 (あなたの場合は間違っていると思います)、アプリケーションが有効な SDL Tridion Impersonation ユーザーで実行されていることを確認してください (外部サーバーで実行している場合は、 SDL Tridion MMC スナップインの偽装ユーザーのドメイン アカウント) を作成し、コア サービス クライアントを次のように偽装します。

using (SessionAwareCoreServiceClient client = new SessionAwareCoreServiceClient())
{
  // impersonate with valid user
  client.Impersonate("SDL Tridion Username here");
  // use client
  client.Delete(...);
}

ただし、もちろん正しいバインディングを選択する必要があります。

于 2013-01-17T12:05:18.860 に答える