Ошибка подключения Tridion к другому пользователю
Привет я пытаюсь подключиться к 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
1 ответ
Чтобы ответить на ваш вопрос, использование netTcp для удаленного клиента возможно только при открытом порту 2660. Поэтому, если вы не уверены в ограничениях брандмауэра, вам лучше использовать привязки wsHttp или basicHttp.
Кроме того, я не понимаю, что вы используете Session Aware Core Service Client и пытаетесь ввести пароль. Это на самом деле не значит для меня, по моему мнению, Session Aware Core Service Client должен использоваться в ситуации, когда ваша учетная запись пользователя уже аутентифицирована на SDL Tridion, или когда вы вызываете Core Service через действительный SDL. Пользователь Tridion Олицетворение. После этого вы выдаете себя за вызов службы Core Service для действительного имени пользователя SDL Tridion, используя только имя пользователя (пароль там не требуется). Вы можете предоставить учетные данные (имя пользователя и пароль) для SessionAwareCoreServiceClient, но затем вам нужно будет предоставить учетные данные действительного пользователя олицетворения Tridion в SDL, и все же вам придется выдавать себя за него.
Я бы посоветовал попробовать использовать обычный клиент службы ядра, как описано здесь: Получить клиент службы ядра без файла конфигурации.
Или, если вы настаиваете на использовании Session Aware Core Service Client (что я считаю неправильным в вашем случае), убедитесь, что ваше приложение работает под действительным пользователем SDL Tridion Impersonation (если вы работаете на внешнем сервере, вам нужно добавить учетную запись домена для этого в оснастке "Олицетворение пользователей оснастки SDC Tridion MMC", а затем выдать себя за клиента основной службы следующим образом:
using (SessionAwareCoreServiceClient client = new SessionAwareCoreServiceClient())
{
// impersonate with valid user
client.Impersonate("SDL Tridion Username here");
// use client
client.Delete(...);
}
Но вам все равно придется выбирать правильные привязки, конечно.