http://myservice.azurewebsites.net/tables/todoitem?ZUMO-API-VERSION=2.0.0
或者如果我在门户网站中将ms_skipversioncheck添加为true.
可能与服务器或客户端版本的差异有关.
即使我更新所有nuget包,同样的事情,只需收到BadRequest(400)
但是使用上面描述的这个服务器,当我运行客户端项目(Visual Studio中的android模拟器)时,它可以在不同步模式下正常工作.
一旦我下载nuget sqlite localstore并取消注释该行:
// #define OFFLINE_SYNC_ENABLED
并使这一行:
等待RefreshItems(true,syncItems:true);
为了启用离线模式,我再次只收到BadRequest(400)
我不知道应该检查什么以使版本兼容.
我没有包含堆栈跟踪或日志,因为BadRequest是我收到的唯一东西.
如果您需要更多信息,请告诉我.
谢谢
编辑:
我检查了这个链接,但我很难解决我的问题.
https://github.com/Azure/azure-content/blob/master/articles/app-service-mobile/app-service-mobile-client-and-server-versioning.md
它让我疯狂
在400错误请求响应的正文中,通常包含错误消息.您可以使用Fiddler( http://www.telerik.com/fiddler)或其他Web调试器查看此内容.
例:
请求
获得http://azielnettest.azurewebsites.net/tables/todoitem
响应
HTTP / 1.1 400错误请求
{“message”:“请求中未指定API版本,此请求需要指定ZUMO-API-VERSION为’2.0.0′.有关更多信息和支持的客户端,请参阅: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-version未包含在旧版客户端的标头中.
希望这可以帮助.