Azure移动服务自定义API在客户端上收到错误请求
因此,我正在使用azure移动服务后端来尝试创建自定义API。但是,我似乎无法从客户端连接到模板表。当您使用模板创建新的Azure移动服务时,它们会为您提供类似于此格式的Azure移动服务自定义API在客户端上收到错误请求,azure,asp.net-web-api2,azure-mobile-services,Azure,Asp.net Web Api2,Azure Mobile Services,因此,我正在使用azure移动服务后端来尝试创建自定义API。但是,我似乎无法从客户端连接到模板表。当您使用模板创建新的Azure移动服务时,它们会为您提供类似于此格式的值API控制器 [MobileAppController] public class ValuesController : ApiController { // GET api/values [Route("api/values")] public string Get() { r
值
API控制器
[MobileAppController]
public class ValuesController : ApiController
{
// GET api/values
[Route("api/values")]
public string Get()
{
return "test";
}
}
从客户端,我试图像这样调用这个端点
var result = mobileService.InvokeApiAsync<string>("values", HttpMethod.Get, null).Result;
var result=mobileService.InvokeApiAsync(“值”,HttpMethod.Get,null).result;
出于某种原因,我一直得到这个例外
{“请求无法完成。(请求错误)”}
{Method:GET,RequestUri:'http://localhost:58457/api/values,版本:1.1,内容:,标题:
{
X-ZUMO-FEATURES:AT
X-ZUMO-INSTALLATION-ID:b04f4e19-4f41-46ed-9767-9c1352037559
接受:application/json
用户代理:ZUMO/1.3
用户代理:(lang=Managed;os=Windows;os_版本=6.1.65536.7601;arch=Win32NT;版本=1.3.30324.0)
X-ZUMO-VERSION:ZUMO/1.3(lang=Managed;os=Windows;os_VERSION=6.1.65536.7601;arch=Win32NT;VERSION=1.3.30324.0)
}}
这也是唯一的模板,所以我需要在启动和运行任何自定义端点之前使用它。有什么想法吗?你说的是移动服务,但你使用的控制器是MobileAppController 这表示您实际上正在使用移动应用程序。如果查看server project packages.config,您可能会看到类似的内容
<package id="Microsoft.Azure.Mobile.Server" version="1.0.119.0" targetFramework="net45" />
通过将应用程序设置MS_SkipVersionCheck的值设置为true,您可以选择退出版本检查。在web.config或Azure门户的“应用程序设置”部分中指定此选项。
ms_skipversioncheck在门户中为true。实际上,即使您在package.config中指定了正在使用的客户端版本,您仍然会收到相同的错误请求。没有指定Zumo版本。必须向InvokeApiAsync方法传递一个指定版本的参数。例如:
var arguments = new Dictionary<string, string>
{
{"ZUMO-API-VERSION", "2.0.0" }
};
var result = MobileService.InvokeApiAsync<string>("CONTROLLERSNAME", "HttpMethod.Get", arguements).Result;
var参数=新字典
{
{“ZUMO-API-VERSION”,“2.0.0”}
};
var result=MobileService.InvokeApiAsync(“ControllerName”、“HttpMethod.Get”、arguements”).result;
宾果游戏会成功的。我已经浏览了下面的链接 这实际上表明,移动应用客户端和服务器SDK最初都基于移动服务中的应用,但它们彼此不兼容。也就是说,您必须将移动应用程序客户端SDK与移动应用程序服务器SDK一起使用,对于移动服务也是如此。此契约通过客户端和服务器SDK使用的特殊头值ZUMO-API-VERSION强制执行 因此,必须在请求中添加头 标题:ZUMO-API-VERSION:2.0.0 或 或
通过将应用程序设置MS_SkipVersionCheck的值设置为true,可以选择退出版本检查,请在web.config中的
你能通过提琴手或邮递员提出同样的要求吗?你还收到400的回复吗?看起来你想打本地主机:58457。。。这是正确的,对吗?使用HTTP客户端,我会得到一个关于请求中缺少Zumo头的错误。新的移动服务似乎需要这样做now@DillonDrobena我下面的答案对你也有用吗?@RamiSarieddine不幸的是,我没有尝试你的解决方案,因为我遇到的问题与我选择的答案直接相关。我只是用错了软件包。我一升级它,一切都很顺利。如果这与版本检查有关,我不能确定,除非我再次降级包。实际上这就是问题所在。随着azure推出新的应用程序服务,许多nuget软件包变得有些混乱。仍然有WindowsAzure.MobileServices与Microsoft.Azure.Mobile.Client一起长期运行。从移动服务到应用服务的迁移仍然在我的API中胡乱进行,它看起来像是感谢@freethinker6
{"message":"No API version was specified in the request, this request needs to specify a ZUMO-API-VERSION of '2.0.0'. For more information and supported clients see: http://go.microsoft.com/fwlink/?LinkId=690568#2.0.0"}
var arguments = new Dictionary<string, string>
{
{"ZUMO-API-VERSION", "2.0.0" }
};
var result = MobileService.InvokeApiAsync<string>("CONTROLLERSNAME", "HttpMethod.Get", arguements).Result;