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

Dil*_*ena 5 azure azure-mobile-services asp.net-web-api2

所以我正在使用azure移动服务后端来尝试制作自定义API.但是我似乎无法从客户端连接到模板表.使用模板创建新的Azure移动服务时,它们会为您提供values类似于此格式的API控制器

[MobileAppController]
public class ValuesController : ApiController
{
    // GET api/values
    [Route("api/values")]
    public string Get()
    {
        return "test";
    }
}
Run Code Online (Sandbox Code Playgroud)

从客户端我试图像这样调用这个端点

var result = mobileService.InvokeApiAsync<string>("values", HttpMethod.Get, null).Result;
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我一直得到这个例外

{"The request could not be completed. (Bad Request)"}

{Method: GET, RequestUri: 'http://localhost:58457/api/values', Version: 1.1, Content: <null>, Headers: { X-ZUMO-FEATURES: AT X-ZUMO-INSTALLATION-ID: b04f4e19-4f41-46ed-9767-9c1352037559 Accept: application/json User-Agent: ZUMO/1.3 User-Agent: (lang=Managed; os=Windows; os_version=6.1.65536.7601; arch=Win32NT; version=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) }}

这也只是模板,所以在我启动并运行任何自定义端点之前,我需要这个工作.关于问题可能是什么的任何想法?

Ram*_*ine 12

您可以通过为应用程序设置MS_SkipVersionCheck设置值true来选择退出版本检查.在web.config或Azure门户的"应用程序设置"部分中指定此项. 在此输入图像描述ms_skipversion在门户网站中检查为true.


Azi*_*iel 3

你说的是移动服务,但你使用的控制器是MobileAppController。

这表明您实际上正在使用移动应用程序。如果您查看服务器项目的packages.config,您可能会看到类似的内容。

 <package id="Microsoft.Azure.Mobile.Server" version="1.0.119.0" targetFramework="net45" />
Run Code Online (Sandbox Code Playgroud)

我怀疑您收到的 400 是因为您使用的移动客户端版本低于 2.0.0。

在您的客户端项目包配置中,尝试使用较新的客户端版本,例如:

<package id="Microsoft.Azure.Mobile.Client" version="2.0.1" targetFramework="win81" />
Run Code Online (Sandbox Code Playgroud)

您还应该检查 400 响应的正文以获取明确的错误消息。我希望它会说这样的话:

{"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"}
Run Code Online (Sandbox Code Playgroud)