我从azure移动应用程序下载了Xamarin.Forms QuickStart Projects(服务器和客户端),然后发布了服务器项目,到目前为止一直很好,但我无法访问表控制器,除非我按照描述添加查询字符串。
http://myservice.azurewebsites.net/tables/todoitem?ZUMO-API-VERSION=2.0.0
或者如果我在门户网站中将ms_skipversioncheck添加为true。
可能与服务器或客户端版本有关的事情存在差异。
即使我更新所有nuget包,同样的事情,只需接收BadRequest(400)
但是使用上面描述的这个服务器,当我运行客户端Project(Visual Studio中的android模拟器)时,它可以在不同步模式下正常工作。
一旦我下载了nuget sqlite localstore并取消注释该行:
// #define OFFLINE_SYNC_ENABLED
并制作此行: 等待RefreshItems(true,syncItems:true);
启用离线模式,我再次只收到BadRequest(400)
我不知道应该检查什么以使版本兼容。
我没有包含堆栈跟踪或日志,因为BadRequest是我收到的唯一内容。
如果您需要更多信息,请告诉我。
由于
编辑: 我查看了这个链接,但我很难解决我的问题。
它让我疯狂
答案 0 :(得分:3)
在400错误请求响应的正文中,通常包含错误消息。 您可以使用Fiddler(http://www.telerik.com/fiddler)或其他Web调试器来查看。
示例:
请求 获取http://azielnettest.azurewebsites.net/tables/todoitem
响应 HTTP / 1.1 400错误请求 {" message":"请求中未指定API版本,此请求需要指定' 2.0.0'的ZUMO-API-VERSION。有关更多信息和支持的客户,请参阅:http://go.microsoft.com/fwlink/?LinkId=690568#2.0.0"}
请求 http://azielnettest.azurewebsites.net/tables/todoitem?zumo-api-version=2.0.0
响应 200 {数据....}
关于调试的第1步。
第2步是检查
a)您部署到站点的服务器项目的packages.config。 你应该找到这样的东西......
<package id="Microsoft.Azure.Mobile.Server" version="1.0.119.0" targetFramework="net45" />
b)Xamarin Forms项目的packages.config。
<package id="Microsoft.Azure.Mobile.Client" version="2.0.1" targetFramework="win81" />
如果您的Microsoft.Azure.Mobile.Client版本低于2.0.0,则无法对Azure Mobile App后端起作用,因为旧版客户端的标头中不包含zumo-api版本。
希望这有帮助。
答案 1 :(得分:0)
我按照TodoItemManager.cs文件顶部的说明进行操作。
//添加脱机同步支持:添加NuGet包WindowsAzure.MobileServices.SQLiteStore //解决方案中的所有项目并取消注释符号定义OFFLINE_SYNC_ENABLED //对于Xamarin.iOS,还要编辑AppDelegate.cs并取消注释对SQLitePCL.CurrentPlatform.Init()的调用 //有关详细信息,请参阅:http://go.microsoft.com/fwlink/?LinkId=620342
正确的nuget包是Microsoft.Azure.Mobile.Client.SQLiteStore,离线模式现在正在运行。
ATT