0

使用Ektron v8.02,我创建了一个使用命名空间的简单类库Ektron.Cms.Framework.Core.Content

我在解决方案中添加了一个控制台应用程序来帮助测试;在控制台应用程序中,我添加了对原始类库的项目引用和一个带有指向我们的 dev Ektron 数据库App.Config的适当连接字符串的文件。Ektron.DbConnection

简而言之,这是有问题的代码:

用于测试的控制台应用程序

static void Main(string[] args) {
    MyClass instance = new MyClass();
}

类库

public class MyClass {
    private Ektron.Cms.Framework.Core.Content.Content cAPI;

    public MyClass() {
        //** exception here **
        cAPI = new Ektron.Cms.Framework.Core.Content.Content();
    }
}

MyClass当我尝试创建 Content API 的新实例时,构造函数中会引发异常。例外是一个IncompatibleTypesException说:

在解析 Ektron.Cms.IRequestInfoProvider 的依赖关系时,提供的类型与 Ektron.Cms.IRequestInfoProvider 不兼容。

Ektron 开发论坛有几个线程在这里这里提到这个确切的问题,但没有发布任何解决方案。希望有使用类库中框架 API 经验的人能够认识到这种情况并在我不得不致电 Ektron 支持之前提供一些建议。

4

3 回答 3

0

我认为你会给自己很多长时间的编码时间和参考/gac 的噩梦,试图从控制台应用程序引用 Web 库。我确信这是可以做到的,而且我自己也取得了有限的成功。但是,当尝试从控制台应用程序调用 Ektron API 时,我强烈建议创建一些托管在您的 ektron 应用程序中的 Web 服务,这些服务将使用 API 完成繁重的工作,然后让您的控制台应用程序调用 Web 服务。通过这样做,您可以开始处理请求并执行各种自动化过程。

此外,当您升级(8.6 有一个很酷的新编辑器)时,这不会导致任何依赖问题并且需要重新编译。他们的网络服务是向后兼容的。

没有代码..但希望这会有所帮助,如果我能澄清一下,请告诉我。

于 2012-07-25T05:01:27.500 回答
0

这并不难。我创建了一个类似于您正在谈论的课程。我的目标实际上是使用这个类库来导入我从内部 CMS 中获得的内容。

Ektron.Cms.Framework.Core.Content.Content()我没有使用,而是使用Ektron.Cms.API.Content.Content().

也许你可以试一试。

于 2012-08-01T19:52:45.107 回答
0

这在 8.02 版中不可用,但较新的版本(我认为是 v8.6+)有一个备用的“3 层”dll 集。这些“3 层”dll 使用 WCF 与工作区/数据库进行通信,因此它们不依赖于 HttpContext 等 Web 内容。您可以在安装目录中找到文件;路径将类似于: C:\Program Files (x86)\Ektron\CMS400v86\startersites\3TierMin\Content

在编写控制台应用程序以执行诸如导入或修改内容之类的操作时,我使用这些 dll 取得了巨大成功。您需要携带一些额外的配置文件,我认为您需要一个指向“中间层”的 URL 的 AppSetting - 具有您的工作区的 Ektron 站点。

于 2013-07-10T02:50:50.103 回答