C# 如何从Web API访问Kentico内容?
使用,我在我的Kentico解决方案中设置了一个新项目,包括:C# 如何从Web API访问Kentico内容?,c#,asp.net,api,asp.net-web-api,kentico,C#,Asp.net,Api,Asp.net Web Api,Kentico,使用,我在我的Kentico解决方案中设置了一个新项目,包括: 来自Nuget的Microsoft.AspNet.WebApi 将[assembly:CMS.AssemblyDiscoverable]添加到AssemblyInfo.cs 参考: CMS.Base 核心 数据引擎 添加了一个继承CMS.DataEngine.Module的类,该类的OnInit()中包含以下内容: GlobalConfiguration.Configuration.Routes.MapHttpRoute( “
- 来自Nuget的Microsoft.AspNet.WebApi
- 将
添加到[assembly:CMS.AssemblyDiscoverable]
AssemblyInfo.cs
- 参考:
- CMS.Base
- 核心
- 数据引擎
- 添加了一个继承CMS.DataEngine.Module的类,该类的
中包含以下内容: GlobalConfiguration.Configuration.Routes.MapHttpRoute( “自定义API”, “customapi/{controller}/{id}”, 新的{id=RouteParameter.Optional})OnInit()
- 根据上面引用的文档,添加了名为
的继承TestController
的控制器ApiController
CMCApp\u AppCode
项目的依赖项。当我重新构建并运行时,我现在可以按预期在以下位置调用API:
问题是,现在我想使用Kentico的文档API,并通过API返回页面数据。然而,如果我在API控制器中添加对Kentico API的调用,就会出现各种各样的错误。例如:
CMS.SiteProvider.SiteContext.CurrentSite
返回:CMS.DataEngine.CMSApplication.Init()代码>
/customapi
添加到Kentico设置中排除的URL因此,我完全陷入了困境——如何让Kentico使用我的web API?这种异常只有在调试时才会发生(在“监视”或“即时”窗口中计算表达式时) 在调试时,请检查您是否选择了“调试”(=非“发布”)配置。 另外,确保调试配置没有启用“优化代码”。调试信息在“高级”下设置为“完整”。
如果没有帮助,那么只需存储调用变量的结果并对其进行评估。其他选项是使用
Debug
或Trace
记录结果,如下所示:Afaik,这种异常仅在调试时发生(在“监视”或“立即”窗口中计算表达式时)。您能将调用结果存储在变量中并对其求值吗?+您可以看看事件日志中实际记录了什么异常吗?(或者抓住它们?@rocky你说得很对,在发布条件下运行时,内部API调用的评估是正确的。非常奇怪,不知道为什么会这样,但至少我的自定义API可以正常工作。如果您能理解为什么无法调试此设置,那就太好了。