在移动应用程序中使用ApiController

时间:2016-03-10 10:56:40

标签: c# azure-mobile-services

我使用Azure移动应用程序创建了后端服务。使用提供的SDK,离线同步适用于移动客户端。我使用的所有控制器都是TableController。现在我想添加一个简单的Web API 2控制器ApiController,移动客户端不会使用它。 以下是我添加到ApiController文件夹的简单Controllers

public class SimpleController : ApiController
{
    public string Get()
    {
        return "Hello";
    }
}

但控制器从未被击中。如果我将[MobileAppController] attrebute添加到控制器,它可以工作,但现在它要求请求中的其他标头(我想这个标头是由客户端SDK发送的):

  

{“message”:“请求中未指定API版本,此请求需要指定ZUMO-API-VERSION为'2.0.0'。有关更多信息和支持的客户端,请参阅:http://go.microsoft.com/fwlink/?LinkId=690568#2.0.0” }

但我在这里不需要这个额外的功能 - 我只是想让我的服务响应简单的GET请求。 虽然the guide表示没有必要装饰该类:

  

任何未应用MobileAppControllerAttribute的控制器仍可由客户端访问,但使用任何移动应用客户端SDK的客户端可能无法正确使用它。

我无法做到这一点。我错过了什么吗?

由于

1 个答案:

答案 0 :(得分:3)

我已经想出了如何使用这两种类型的控制器。

只需在config.MapHttpAttributeRoutes();方法中添加对StartUp.ConfigureMobileApp的调用,如下所示:

public static void ConfigureMobileApp(IAppBuilder app)
{
    HttpConfiguration config = new HttpConfiguration();

    //For more information on Web API tracing, see http://go.microsoft.com/fwlink/?LinkId=620686 
    config.EnableSystemDiagnosticsTracing();

    config.MapHttpAttributeRoutes(); //Add this line

    new MobileAppConfiguration()
        .UseDefaultConfiguration()
        .ApplyTo(config);

    ... //rest of the code
}

然后用自定义路线装饰您的控制器:

[Route("api/Simple")] //add this
public class SimpleController : ApiController
{
    public string Get()
    {
        return "Hello";
    }
}