Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure移动服务自定义API在客户端上收到错误请求_Azure_Asp.net Web Api2_Azure Mobile Services - Fatal编程技术网

Azure移动服务自定义API在客户端上收到错误请求

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

因此,我正在使用azure移动服务后端来尝试创建自定义API。但是,我似乎无法从客户端连接到模板表。当您使用模板创建新的Azure移动服务时,它们会为您提供类似于此格式的
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;