使用Kentico's documentation我已在我的Kentico解决方案中设置了一个新项目,其中包含以下内容:
[assembly: CMS.AssemblyDiscoverable]
添加到AssemblyInfo.cs
添加了一个继承CMS.DataEngine.Module
的类,其OnInit()
中包含以下内容:
GlobalConfiguration.Configuration.Routes.MapHttpRoute( " customapi&#34 ;, " customapi / {控制器} / {ID}&#34 ;, new {id = RouteParameter.Optional});
根据上面引用的文档添加了一个名为ApiController
的{{1}}继承控制器。
因为我希望这个API与我的主要Kentico网站在同一个域下托管,然后我将这个自定义项目作为TestController
项目的依赖项。当我重新构建并运行时,我现在可以按照预期在http://dev.local/customapi/test
问题是现在我想使用Kentico的文档API并通过API返回页面数据。但是,如果我在API控制器中添加对Kentico API的调用,我会收到各种错误。例如:
CMCApp_AppCode
返回:评估方法CMS.SiteProvider.SiteContext.get_CurrentSite 需要调用方法System.RuntimeType.IsDelegate,但不能 在这种背景下呼唤。
CMS.SiteProvider.SiteContext.CurrentSite
投掷:无法计算表达式,因为线程在某个点停止 垃圾收集是不可能的,可能是因为代码是 优化
我尝试过的事情:
CMS.DocumentEngine.DocumentHelper.GetDocument
CMS.DataEngine.CMSApplication.Init();
添加到Kentico设置中的已排除网址。所以我完全陷入困境 - 我怎样才能让Kentico使用我的网络API?
答案 0 :(得分:2)
这种异常仅在调试时(在计算表或立即窗口中计算表达式时)。
检查您是否已选择" Debug" (= not" Release")调试时的配置。
另外,请确保调试配置没有"优化代码"启用。并且调试信息设置为" Full"在"高级"。
如果它没有帮助,那么只需将调用结果存储到变量中并对其进行评估。其他选项是使用Debug
或Trace
记录结果,如下所示:https://support.microsoft.com/en-us/help/815788/how-to-trace-and-debug-in-visual-c