2016-03-10 3 views
3

Я создал бэкэнд-сервис с использованием Azure Mobile App. Offline sync отлично работает с мобильными клиентами, используя предоставленный SDK. Все контроллеры, которые я использовал, - TableController. Теперь я хочу добавить простой контроллер Web API 2 ApiController, который не будет использоваться мобильными клиентами. Вот простой ApiController, что я добавил в Controllers папку:Использование ApiController в мобильном приложении

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

Но контроллер никогда не попал. Если добавить [MobileAppController] attrebute к контроллеру, он работает, но теперь он просит дополнительных заголовков в запросе (я предполагаю, что это заголовки посылаются клиентским SDK):

{ «сообщение»: "Ни одна версия API не указано в запросе, этот запрос необходимо указать Zumo-API-версия «2.0.0» для получения дополнительной информации и поддерживаемых клиентов см. http://go.microsoft.com/fwlink/?LinkId=690568#2.0.0 «}

Но я не нужна эта дополнительная функциональность здесь - я просто хочу, чтобы мой сервис отвечал на простые запросы GET. Хотя the guide заявляет, что не является необходимым для украшения класса:

Любой контроллер, который не имеет MobileAppControllerAttribute применены все еще могут быть доступны клиентам, но она не может быть правильно потребляется клиентами с помощью любого мобильного клиентского приложения SDK ,

Я не могу этого добиться. Я что-то упускаю?

Благодаря

ответ

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"; 
    } 
} 
+0

приятно. спасибо за это, но знаете ли вы, в чем смысл/преимущество использования MobileAppController? – batmaci

Смежные вопросы