Tridion 使用核心服务和模拟发布

Tridion 使用核心服务和模拟发布,tridion,tridion-2011,Tridion,Tridion 2011,我有一个Tridion核心服务Web应用程序来发布页面。当登录到服务器并通过使用ajax调用web服务的浏览器客户端从那里运行它时,它工作正常。但是,当我从桌面运行应用程序时,它什么也不做,也不会抛出错误消息 *编辑: 托管Web服务的Web应用程序作为Tridion 2011 CMS网站下的“应用程序”运行。这样做是为了避免跨域ajax问题/ 更新:下面的代码运行良好-无论是模拟还是尼克的解决方案。我的问题实际上是如何从jQuery调用web服务并使用适当的URL。我留下了代码和问题,所以也许

我有一个Tridion核心服务Web应用程序来发布页面。当登录到服务器并通过使用ajax调用web服务的浏览器客户端从那里运行它时,它工作正常。但是,当我从桌面运行应用程序时,它什么也不做,也不会抛出错误消息

*编辑: 托管Web服务的Web应用程序作为Tridion 2011 CMS网站下的“应用程序”运行。这样做是为了避免跨域ajax问题/

更新:下面的代码运行良好-无论是模拟还是尼克的解决方案。我的问题实际上是如何从jQuery调用web服务并使用适当的URL。我留下了代码和问题,所以也许它会帮助其他人。 我的代码是:

string binding = "wsHttp_2011";
using (var client = new SessionAwareCoreServiceClient(binding))
{
    client.Impersonate("company\\cms_svc");

    // ** Get Items to Publish
    List<string> itemsToPublish = GetItemsToPublish(publishItem.TcmUri, client);

    PublishInstructionData instruction = new PublishInstructionData
    {
        ResolveInstruction = new ResolveInstructionData() { IncludeChildPublications = false },
        RenderInstruction = new RenderInstructionData()
    };

    PublicationTargetData pubtarget = (PublicationTargetData)client.Read(publishItem.PubTargetUri, readoptions);
    List<string> target = new List<string>();
    target.Add(pubtarget.Id);

    client.Publish(itemsToPublish.ToArray(), instruction, target.ToArray(), GetPublishPriority(publishItem.Priority), readoptions);
}

请看SDL Live Content的这一页,它解释了作为不同用户连接的各种类型的场景:

根据文档,您可能希望使用NetworkCredential按如下方式建立核心服务连接,而不是模拟:

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);
}

请看SDL Live Content的这一页,它解释了作为不同用户连接的各种类型的场景:

根据文档,您可能希望使用NetworkCredential按如下方式建立核心服务连接,而不是模拟:

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);
}