我有一个现有的 MCV 移动站点,并且正在使用 Xamarin 创建一个移动应用程序。我想使用我的 MVC 应用程序中包含的相同服务来支持 Xamarin 应用程序。我已经尝试在我的 MVC 应用程序中创建一个 REST 服务以供 Xamerin 应用程序以多种方式使用,但都发现了每种方式的问题。
我的第一次尝试是创建一个返回 JsonResult 的操作并从 Xamarin 应用程序调用它。这行得通,除了返回的响应是 JsonResult,而不仅仅是 JsonData,当我尝试将它解析为通用对象时,我得到一个错误。
JsonResult 示例:{{"ContentEncoding": null, "ContentType": null, "Data": "[{\"Id\":1,\"Name\":\"Calendar\",\"Category\ ":null,\"Price\":0},{\"Id\":2,\"Name\":\"Center\",\"Category\":null,\"Price\":0} ,{\"Id\":3,\"Name\":\"Maps\",\"Category\":null,\"Price\":0}]", "JsonRequestBehavior": 0, "MaxJsonLength" :空,“递归限制”:空}}
错误:System.InvalidCastException:无法从源类型转换为目标类型。在 System.Json.JsonValue.op_Implicit (System.Json.JsonValue 值) [0x00000] in :0
我的下一个尝试是使用简单的 Get() 创建一个从 ApiController 继承的新控制器。当我尝试调用它时,我收到错误:IControllerFactory 'mobile.Infrastructure.DependencyInjection.StructureMapControllerFactory' 没有返回名称为 'appmenu' 的控制器。
虽然RequestContext对象中的路由信息是正确的,所以路由正在被正确解析,控制器名称为AppMenuController。
在这一点上,我不确定我是否走在正确的道路上。谢谢。