【问题标题】:Unable to get Core Service client working无法让核心服务客户端工作
【发布时间】:2012-07-09 09:21:40
【问题描述】:

我正在尝试使用核心服务发布组件,为此,我刚刚创建了一个控制台应用程序,并从服务器执行。我收到以下错误消息。

未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集“Tridion.ContentManager.CoreService.Client, Version=6.1.0.996, Culture=neutral, PublicKeyToken=ddfc895746e5ee6b”或其依赖项之一。系统找不到指定的文件。

以下是我的代码,有人遇到这个问题吗?

static void Main(string[] args)
{

    try
    {
        string compid = "tcm:56-935";

        var client = new SessionAwareCoreServiceClient();
        var readoption = new ReadOptions();
        var component = (ComponentData)client.Read(compid, readoption);
        var ItemToPublish = new List<string>();
        ItemToPublish.Add(component.Id);
        var instruction = new PublishInstructionData();
        var pubtarget = (PublicationTargetData)client.Read(
                                               "tcm:0-21-65537", readoption);
        List<string> target = new List<string>();
        target.Add(pubtarget.Id);
        client.Publish(ItemToPublish.ToArray(), instruction, target.ToArray(), 
                       PublishPriority.Normal, readoption);
        Console.WriteLine("component published");
        Console.WriteLine(component.Title);
        Console.WriteLine(pubtarget.Title);
        Console.ReadLine();

    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
        Console.ReadLine();
    }
}

【问题讨论】:

    标签: tridion tridion-2011


    【解决方案1】:

    错误很明显,它表示您没有适当的依赖关系。您必须将 Tridion.ContentManager.CoreService.Client.dll 放在可执行文件所在的同一目录中(或者,您可以放在 GAC 中)。通常在 Visual Studio 中在您的项目“复制本地”的引用程序集上有一个选项,您可以尝试将其设置为 true 并尝试再次执行您的代码。

    【讨论】:

    • 我试图在同一位置处理 client.dll,但收到 belwo 错误。 “在 ServiceModel 客户端配置部分中找不到引用合同‘Tridion.contentManager.CoreService.Client.IsessionAswarecoreService’的默认端点元素。这可能是因为找不到您的应用程序的配置文件,或者因为没有匹配此合同的端点元素可以可以在客户端元素中找到”。
    • 一旦你得到那个错误,杰里米是对的:你缺少一个配置文件。您是否按照本帮助主题中的步骤 3(需要登录)进行操作? (sdllivecontent.sdl.com/LiveContent/content/en-US/…)
    • @Frank:我已经从提到的目录中复制了提到的配置文件,并在我的解决方案中创建了新的 app.config 文件。并更改了代码 var client = new CoreServiceClient();而不是 var client = new SessionAwareCoreServiceClient();现在收到错误“无法激活请求的服务'localhost/webservices/CoreService2011.svc/basicHttp'。
    • 这通常意味着 Windows 事件查看器中存在关于激活失败原因的附加错误。此外,检查当您在运行程序的同一台机器上的浏览器中打开 localhost/webservices/CoreService2011.svc 时会发生什么。
    • “/webservices”应用程序中的服务器错误。找不到与具有绑定 WSHttpBinding 的端点的方案 https 匹配的基地址。注册的基地址方案是 [http]。
    【解决方案2】:

    看起来(根据您对 Igor 的回答的评论)您缺少一些配置。在 Tridion Practice 网站上查看 Frank 的 wiki 帖子 - https://code.google.com/p/tridion-practice/wiki/GetCoreServiceClientWithoutConfigFile

    【讨论】:

    • 在我的控制台应用程序中必须有该类吗?我需要在 config 或 assemblyinfo.cs 中做些什么吗?
    • 您可以选择使用 app.config 文件进行配置或在代码中指定必要的值,如 Jeremy 链接到的页面。但是考虑到您遇到的问题,我现在会坚持您已经尝试过的内容,只需使用 app.config
    猜你喜欢
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 2012-05-02
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多