2

ページを公開するためのTridionCoreServiceWebアプリケーションがあります。サーバーにログインし、そこからajaxを使用してWebサービスを呼び出すブラウザークライアントを介してサーバーを実行すると、正常に機能します。ただし、デスクトップからアプリケーションを実行すると、何も実行されず、エラーメッセージもスローされません。

*編集:WebサービスをホストしているWebアプリは、Tridion 2011CMSWebサイトで「アプリケーション」として実行されています。これは、クロスドメインの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);
}
4

1 に答える 1

4

SDLライブコンテンツのこのページをご覧ください。さまざまなユーザーとして接続するためのさまざまなタイプのシナリオについて説明しています。

http://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL_Tridion_2011_SPONE/task_87284697A4BB423AAD5387BBD6884735

ドキュメントによると、偽装の代わりに、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);
}
于 2013-01-28T19:31:52.040 に答える