您好我正在尝试使用以下代码使用其他人凭据通过核心服务连接到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
答案 0 :(得分:4)
要回答您的问题,只有在端口2660打开时才可以将netTcp用于远程客户端。因此,如果您不确定防火墙限制,最好使用wsHttp或basicHttp绑定。
此外,我没有得到的一件事是你正在使用Session Aware核心服务客户端而你正在尝试提供密码。这对我来说并没有真正加起来,在我看来,会话感知核心服务客户端应该用于您的用户帐户已经针对SDL Tridion进行身份验证的情况,或者当您通过有效的SDL Tridion模拟用户。您只需用户名(无需密码)即可模拟核心服务调用有效的SDL Tridion用户名。您可以为SessionAwareCoreServiceClient提供凭据(用户名和密码),但是您必须提供有效SDL Tridion模拟用户的凭据,然后您仍然需要模拟。
我建议尝试使用常规核心服务客户端,如下所述:Get Core Service Client without config file。
或者,如果您坚持使用Session Aware核心服务客户端(我认为您的情况不对),请确保您的应用程序在有效的SDL Tridion模拟用户下运行(如果您在外部服务器上运行,则需要在SDL Tridion MMC管理单元模拟用户中为其添加域帐户,然后模拟核心服务客户端,如下所示:
using (SessionAwareCoreServiceClient client = new SessionAwareCoreServiceClient())
{
// impersonate with valid user
client.Impersonate("SDL Tridion Username here");
// use client
client.Delete(...);
}
但是你仍然必须选择正确的绑定。