有没有人用LINQPad连接到Tridion Core Services?

时间:2012-03-12 16:28:01

标签: linqpad tridion

我爱LINQPad!我正在尝试使用LINQPad中的WCF连接器连接到Tridion Core Services,以帮助我快速开发和扩展。学习核心。

目前,LINQPad报告了URI的404(未找到)错误,但同样的URI在我的浏览器中有效。

其他人成功连接?

LINQPad的连接窗口

LINQPad's connection window

3 个答案:

答案 0 :(得分:12)

阅读:http://markistaylor.com/2010/09/09/linqpad-beyond-linq/看起来您可以通过添加对System.ServiceModel.dll和[Tridion_Home] \ bin \ client \ Tridion.ContentManager.CoreService.Client.dll的引用来实现此目的。 (在Query - > Query Properties下)到LINQPad。

答案 1 :(得分:12)

LINQPad现在是我通过其核心服务API与Tridion交互的首选工具。

如果只是download a plain LINQPad,它可以连接到WCF数据服务(通常称为OData源),SQL Server数据库和Azure数据服务市场。由于Tridion的核心服务不属于这些类型,因此无法与其建立持久连接。

但是,您仍然可以通过以下步骤使用LINQPad作为Visual Studio的轻量级替代方法:

  1. 将LINQPad的语言切换为“C#Program”
  2. 粘贴在下面的代码段中
  3. 从代码段添加必要的DLL引用
  4. 从代码段
  5. 添加必要的命名空间引用
  6. 指定您自己的主机名,用户名和密码值
  7. 编写代码
  8. LINQPad可以处理多种语言。它默认为“C#Expression”,这意味着您只需在代码面板中指定一个“语句”即可。在使用例如驱动程序可用的SQL数据库,但不足以与Tridion的核心服务进行交互。首先,您需要在查询顶部的工具栏中将其从“C#Expression”语言切换为“C#Program”语言。

    切换语言后,我通常从以下样板开始

    void Main()
    {
        // System.Runtime.Serialization.dll
        // System.ServiceModel.dll
        // System.Net.dll
        // Namespaces:
        // System.Net
        // System.ServiceModel
        // Tridion.ContentManager.CoreService.Client
        var binding = new NetTcpBinding { MaxReceivedMessageSize = 2147483647, ReaderQuotas = new XmlDictionaryReaderQuotas { MaxStringContentLength = 2147483647, MaxArrayLength = 2147483647 } };
        var endpoint = new EndpointAddress("net.tcp://<hostname>:2660/CoreService/2011/netTcp");
        var DEFAULT_READ_OPTIONS = new ReadOptions();
    
        CoreServiceClient client = new CoreServiceClient(binding, endpoint);
        client.ChannelFactory.Credentials.Windows.ClientCredential = new NetworkCredential("<username>", "<password>");
        try {
            // TODO: fill in the blanks
        } finally {
            if (client.State == CommunicationState.Faulted) client.Abort(); else client.Close();
        }    
    }
    

    粘贴此代码后,打开“查询属性”窗口(F4)并将“{1}},System.Runtime.Serialization.dllSystem.ServiceModel.dll添加到”其他参考“选项卡。确保您的计算机上有Tridion.ContentManager.CoreService.Client.dll的副本,并添加对它的引用。 (您可以在服务器上的Tridion / bin / client中找到它)

    System.Net.dllSystem.NetSystem.ServiceModel添加到其他命名空间导入标签。

    更改代码中的Tridion.ContentManager.CoreService.Client<hostname><username>值,并测试连接是否成功。

    在此之后,填写空白并开始使用Core Service API。

    我建议始终保持核心服务API文档(CHM格式)处于打开状态。随着那个开放,我发现即使没有自动完成,我也可以走得很远。如果保存刚创建的查询,可以使用ctrl-shift-C轻松克隆它,并且已经填写了语言,DLL引用和命名空间的新查询。

    更新

    现在可以在此处记录从LINQPad连接到Tridion的更简单方法:https://sdltridionworld.com/articles/sdltridion2011/using_linqpad_with_tridion.aspx

答案 2 :(得分:2)

您可以检查内容管理器的IIS日志 - 您是否看到LINQPaD连接尝试中的404?页面确实存在吗?