使用Kentico's documentation我已經成立了一個新的項目,我有以下Kentico解決方案:從的NuGet 如何從Web API訪問Kentico內容?
[assembly: CMS.AssemblyDiscoverable]
- Microsoft.AspNet.WebApi到
AssemblyInfo.cs
- 參考:
- CMS.Base
- CMS.Core
- CMS.DataEngine
新增一類它繼承
CMS.DataEngine.Module
,並在其OnInit()
以下:GlobalConfiguration.Configuration.Routes.MapHttpRoute( 「customapi」, 「customapi/{控制器} /(編號)」 , new {id = RouteParameter.Optional});
根據上述參考文獻,增加了一個控制器,繼承
ApiController
,稱爲TestController
。
因爲我想這個API相同的域作爲我的主要Kentico網站我那麼做這個自定義項目CMCApp_AppCode
項目的依賴下主持。當我重新構建和運行現在我可以打電話給我的API的預期:http://dev.local/customapi/test
的問題是,現在我想和Kentico的文件API工作,通過API返回頁面數據。但是,如果我在API控制器中添加對Kentico API的調用,則會出現各種錯誤。例如:
- 調用
CMS.SiteProvider.SiteContext.CurrentSite
回報:
評價方法的CMS.SiteProvider.SiteContext.get_CurrentSite 需要調用方法System.RuntimeType.IsDelegate,不能 叫在這方面。
CMS.DocumentEngine.DocumentHelper.GetDocument
拋出:因爲一個線程被停止在一個點 其中垃圾收集是不可能的,這可能是因爲代碼是無法計算表達式 已優化。
事情我已經嘗試:
- 添加以下在控制器動作的開始,但這並沒有區別 -
CMS.DataEngine.CMSApplication.Init();
- 添加
/customapi
在Kentico設置排除的URL。
所以我完全卡住了 - 我怎樣才能讓Kentico使用我的web API?
據我所知,這種異常的調試時(而在手錶或即時窗口計算表達式)纔會發生。你可以將調用結果存儲在變量中並對它們進行評估嗎? +你能看看事件日誌中實際記錄的異常嗎? (或者抓住他們?) – rocky
@rocky你說的很對,在釋放條件下運行時內部API調用正確計算。很奇怪,不知道爲什麼這是,但至少我的自定義API實際工作。將很好理解爲什麼這個設置不能被調試。 – getsetcode