Сбой маршрутов Asp.Net WebAPI в эмуляторе вычислений Azure

Контекст

У меня есть два приложения asp.net mvc 4, одно из которых представляет собой стандартное приложение в стиле CRUD, полученное из шаблона проекта интернет-приложения Visual Studio 2010, второе — из шаблона веб-API и предназначено для работы в качестве службы REST. Я намерен запустить оба этих приложения в одном и том же экземпляре веб-роли Azure.

Проблема

Когда я пытаюсь получить доступ к веб-API с помощью «просмотра в браузере» или путем создания приложения StartUp Project и использования Debug-> Start New Instance, я могу выдавать GET и получать ответы с данными. Когда я пытаюсь запустить эти приложения на своем локальном компьютере, размещенном в эмуляторе вычислений Azure, НИ ОДИН из маршрутов WebAPI никогда не разрешается на соответствующий контроллер, и я всегда получаю ответы 404. Такое поведение проявляют только маршруты WebAPI - они полностью игнорируются, как будто я их вообще не регистрировал.

Неважно, как сделан запрос — я могу выдать их из браузера или из (например) клиента RESTSharp на стороне сервера в другом веб-приложении. Во всех случаях, когда это приложение размещается на эмуляторе вычислений, ни один из зарегистрированных маршрутов WebAPI не разрешается в соответствующий контроллер.

Вопрос

Что я мог неправильно настроить в своем облачном проекте, чтобы маршруты WebAPI игнорировались ТОЛЬКО при размещении в локальном эмуляторе вычислений Azure?

Что я пробовал

Я рассмотрел эти вопросы, ни один из которых не содержал никакой информации, которая изменила бы это поведение:

Я попытался разделить два приложения на отдельные веб-роли, но это не дало результата.

Я пытался создавать облачные проекты с нуля с готовыми проектами WebAPI, и все они, кажется, работают без проблем, так что это не похоже на дефект эмулятора. У меня явно что-то не так в моей текущей конфигурации облачного проекта VS2010SP1 (я использую инструменты Azure v2.0 SDK для Visual Studio).

Пример кода

FWIW, вот моя текущая конфигурация ServiceDefinition, относящаяся к веб-роли, в которой размещены эти два приложения:

 <WebRole name="DualSite" vmsize="Small">
   <Sites>
     <Site name="CRUDAppSite">
       <VirtualApplication name="CRUDApp" physicalDirectory="..\..\..\source\CRUDApp" />
       <Bindings>
         <Binding name="Endpoint1" endpointName="Endpoint1" />
       </Bindings>
     </Site>
     <Site name="RestAppSite" physicalDirectory="..\..\..\source\RestApp">
         <VirtualApplication name="RestApp" physicalDirectory="..\..\..\source\RestApp" />
         <Bindings>
             <Binding name="Endpoint2" endpointName="Endpoint2" />
         </Bindings>
     </Site>
   </Sites>
   <Endpoints>
       <InputEndpoint name="Endpoint1" protocol="http" port="9090" />
       <InputEndpoint name="Endpoint2" protocol="https" port="7080" certificate="RestAppSSLCert" />
   </Endpoints>
   <Imports>
     <Import moduleName="Diagnostics" />
     <Import moduleName="RemoteAccess" />
   </Imports>
   <Certificates>
       <Certificate name="RestAppSSLCert" storeLocation="LocalMachine" storeName="My" />
   </Certificates>
 </WebRole>

person Hoobajoob    schedule 17.05.2013    source источник