Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法从类库中使用Ektron Framework API_C#_Visual Studio 2010_Ektron - Fatal编程技术网

C# 无法从类库中使用Ektron Framework API

C# 无法从类库中使用Ektron Framework API,c#,visual-studio-2010,ektron,C#,Visual Studio 2010,Ektron,使用Ektron v8.02,我创建了一个简单的类库,它使用了Ektron.Cms.Framework.Core.Content名称空间 我在解决方案中添加了一个控制台应用程序来帮助测试;在控制台应用程序中,我添加了一个对原始类库的项目引用和一个app.Config文件,其中包含指向dev Ektron数据库的相应Ektron.DbConnection连接字符串 简而言之,以下是相关代码: 用于测试的控制台应用程序 类库 当我尝试创建ContentAPI的新实例时,MyClass构造函数中会抛出

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

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

简而言之,以下是相关代码:

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

类库

当我尝试创建ContentAPI的新实例时,MyClass构造函数中会抛出一个异常。例外情况是不兼容的TypesException,它表示:

解析Ektron.Cms.IRequestInfoProvider的依赖项时,提供的类型与Ektron.Cms.IRequestInfoProvider不兼容


Ektron开发论坛有几个线程,它们提到了这个确切的问题,但是没有发布解决方案。希望有使用类库框架API经验的人能认识到这种情况,并在我打电话给Ektron support之前提供一些建议。

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

另外,升级8.6时,如果有一个很酷的新编辑器,这将不会导致任何依赖性问题,需要重新编译。他们的Web服务是向后兼容的


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

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

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


可能您可以试试。

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


我在编写控制台应用程序以执行导入或修改内容等操作时,使用了这些DLL并取得了巨大成功。您需要带上一些额外的配置文件,我认为您需要一个指向中间层url的应用程序设置,即拥有您的工作区的Ektron站点。

感谢您抽出时间回复Andrew。我对Console应用程序的唯一用途是测试类库,尽管我相信有更好的方法。正如您所提到的,类库是一组更大的web服务中的一个组件。您是说出现此错误是因为我试图通过控制台应用程序进行测试?是的,直接引用控制台应用程序中的程序集将生成错误。Ektron的API严重依赖于扩展System.Web、HTMLGenericControl等内容的对象。。所有功能均适用于web应用程序/网站。我的观点是,在尝试运行这些类型的测试时,Ektron api驻留在web服务中,控制台应用程序调用服务并返回您需要的任何内容。听起来你想做一些自动化测试?如果是这样的话,我强烈推荐硒。它与Ektron配合得非常好,这就是我的团队在这里使用的=Ektron;。谢谢你的回复@Subrato。Ektron.Cms.API.Content.Content是Ektron较旧的API堆栈的一部分,我们正试图从中移除。虽然它在技术上可以在这种情况下工作,但这不是我们的方向。接受是因为您指出了一些我当时应该很清楚的事情-8.02并没有真正支持框架API。我们已经升级到8.61,并且在框架API/3层设置方面也取得了巨大成功。@brian oliver我也有类似的问题,我需要带什么样的配置文件。我有必要的dll文件,但我想我需要更多
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();
    }
}