【问题标题】:Error connecting Tridion with different user将 Tridion 与其他用户连接时出错
【发布时间】:2012-12-31 20:47:43
【问题描述】:

您好,我正在尝试使用以下代码使用另一个人的凭据通过核心服务连接到 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

【问题讨论】:

  • Tridion 事件日志中有任何内容吗?对我来说看起来像防火墙问题。 2660端口开放了吗?
  • 尝试从同一台机器连接,并检查事件查看器
  • 您也可以编辑您的问题并为您的 netTcp_2011 绑定添加端点信息吗?
  • 这似乎是因为你是远程的,所以这个错误与连接问题有关,而不是假冒。尝试改用 wsHttp_2011。

标签: .net tridion tridion-2011 core-services tridion-core-services


【解决方案1】:

要回答您的问题,只有在端口 2660 开放的情况下,才能将 netTcp 用于远程客户端。因此,如果您不确定防火墙限制,最好使用 wsHttp 或 basicHttp 绑定。

此外,我没有得到的一件事是您正在使用会话感知核心服务客户端并且您正在尝试提供密码。这对我来说并没有真正增加,在我看来,会话感知核心服务客户端应该用于您的用户帐户已经针对 SDL Tridion 进行身份验证的情况,或者当您通过有效的 SDL 调用核心服务时Tridion 模拟用户。在此之后,您仅通过用户名(不需要密码)模拟对有效 SDL Tridion 用户名的核心服务调用。您可以为 SessionAwareCoreServiceClient 提供凭据(用户名和密码),但是您必须提供有效 SDL Tridion 模拟用户的凭据,然后您仍然必须进行模拟。

我建议尝试使用常规核心服务客户端,如下所述: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(...);
}

当然,您仍然必须选择正确的绑定。

【讨论】:

  • 我不完全同意你的观点,巴特。首先 TridionServiceHost 中没有非 SessionAwareClient,不支持在 TCMServiceHost 上配置 LDAP(但可以),所以这里没有问题。它仍然应该使用用户名和密码。使用它的一个原因是 net.tcp 比其他传输方法快得多。
  • 这不是问题的答案,所以投反对票,对不起
  • 不确定 TridionServiceHost 中没有非 SessionAwareClient 是什么意思,因为有 CoreServiceClient 和 SessionAwareCoreServiceClient。在我看来,SessionAwareCoreServiceClient 只能与模拟一起使用,这是您可以与 SDL Tridion 用户的直接凭据一起使用的常规模拟。问题的答案在第一行中给出,我声明他必须打开 2660 端口。
  • SessionAwareCoreServiceClient 可以与 NetTcp 和 WsHttp 一起使用,并且可以与任何用户一起使用(例如,您可以调用 client.Impersonate("username"))。客户端知道的会话是服务器上的会话,因为它在请求之间保持同一个会话处于活动状态,直到您明确断开连接。
  • 我想说net.tcp上没有CoreServiceClient
猜你喜欢
  • 2014-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-15
  • 2018-08-19
  • 2016-09-03
  • 1970-01-01
相关资源
最近更新 更多