1

我有一个现有的 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。

在这一点上,我不确定我是否走在正确的道路上。谢谢。

4

2 回答 2

0

我不确定发生了什么变化,但现在相同的代码似乎返回了 Json 字符串,而不是 JsonResult。当我将 htt 请求的 url 放在浏览器中时,我得到的是 Json,而不是像以前那样的 JsonResult,所以我的 MVC 代码中一定发生了一些变化。

于 2013-09-12T14:10:38.157 回答
0

我选择了不同的路径。而不是将我的 MVC 站点和 WCF 服务绑定到同一个项目中;我故意将它们分开。主要是由于缩放问题。对我来说,根据哪个项目获得最多使用量来增加负载均衡器后面的实例要容易得多。我几乎可以向自己保证,在我目前的用例中,移动设备的使用率很可能会比网络高得多。另外,我必须有一个针对移动设备的安全实施。

我主张在构建移动服务之前考虑您在移动服务上的安全实施。保持安全性会让您陷入困境,除非您正在构建企业内部应用程序,并且您的设备在本地网络/或 VPN 上使用。

如果您正在为教育构建一些东西,那么医疗行业中有一个类似于 HIPAA 的标准,它要求以特定方式处理您的数据。

此外,我不会使用 System.Json,而是使用商店中的 JSON.net 组件。它使事情变得更简洁,您会发现自己不得不在 System.JSON 中做一些非常奇怪的事情。代码不像 JSON.net 那样直观,或者我假设是 ServiceStack。

于 2013-09-10T16:57:52.420 回答