我使用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的客户端可能无法正确使用它。
我无法做到这一点。我错过了什么吗?
由于
答案 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";
}
}