2015-03-27 1 views
0

У меня есть служба OData Web Api, которую я развертываю как облачный сервис. У меня также есть веб-сайт, который создается с некоторыми задачами grunt, которые создают папку dist со всеми скомпилированными файлами в ней.Добавить дополнительную папку для сайтов в Azure Cloud Service

Теперь я хочу добавить эту папку в проект Cloudservice. Я уже пробовал, что предложено here, но это скопирует папку только в соответствие с облачным сервисом, а не в sitesroot/0 /. Таким образом, веб-сайт недоступен при развертывании.

Как добавить папку при создании моей облачной службы, так что это папка, доступная из IIS? Например, если я хочу, чтобы моя папка расстояние будет доступен как: http://mysite.cloudapp.net/dist/ или http://mysite.cloudapp.net/client/

Я мог бы добавить его в проект WebRole со службой OData, но эта папка является «движущаяся цель», будет файлы добавлено и удалено, поэтому трудно добавить его в проект WebRole будет неудобно.

ответ

0

Решение этой проблемы оказалось довольно просто: Аналог решения для дополнительного содержимого папок здесь: Adding additional content folders to Azure package

но вместо добавления папки в servicedefinition.csdef в области содержания, просто добавьте его как виртуальный каталог.

Так же, как в растворе для папки содержимого, добавить задачу в файле ccproj:

<UsingTask 
    TaskName="SetEnvironmentVariableTask" 
    TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v$(MSBuildToolsVersion).dll"> 
    <ParameterGroup> 
     <Name ParameterType="System.String" Required="true" /> 
     <Value ParameterType="System.String" Required="true" /> 
    </ParameterGroup> 

    <Task> 
     <Using Namespace="System" /> 
     <Code Type="Fragment" Language="cs"> 
     <![CDATA[ 
      Environment.SetEnvironmentVariable(Name, Value); 
     ]]> 
     </Code> 
    </Task> 
    </UsingTask> 
    <Target Name="BeforeBuild" Condition=" '$(FrontendDir)' == '' "> 
    <Message Text="Setting Project Dir" Importance="high" /> 
    <SetEnvironmentVariableTask Name="FrontendDir" Value="$(ProjectDir)\..\Template.FrontEnd\dist" /> 
    </Target> 

Но тогда, вместо того, чтобы добавить его в качестве содержимого, добавьте папку в качестве виртуального каталога:

 <Site name="Web"> 
      <VirtualDirectory name="Client" physicalDirectory="%FrontendDir%"></VirtualDirectory> 
      <Bindings> 
       <Binding name="Endpoint1" endpointName="Endpoint1" /> 
       <Binding name="HttpsIn" endpointName="HttpsIn" /> 
      </Bindings> 
     </Site> 
0

У вас не было кода, который откладывает файлы в эту папку, создайте его, если он не существует?

Кроме этого, добавьте его в свой сервисный проект WebRole OData, как вы предложили.

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