在Azure Cloud Service中向sitesroot添加其他文件夹

时间:2015-03-27 19:26:33

标签: azure gruntjs azure-web-roles

我有一个OData Web Api服务,我将其部署为云服务。 我还有一个网站,它创建了一些grunt任务,创建一个包含所有编译内容的dist文件夹。

我现在要做的是将此文件夹添加到Cloudservice项目中。 我已经尝试了建议的here,但这只会将文件夹复制到cloudservice的批准中,而不是在sitesroot / 0 /中。 因此,部署时无法访问该网站。

如何在构建到我的Cloud Service时添加文件夹,以便它是可从IIS访问的文件夹? 例如,如果我希望我的dist文件夹可以访问: http://mysite.cloudapp.net/dist/http://mysite.cloudapp.net/client/

我可以使用OData服务将其添加到WebRole项目中,但是这个文件夹是一个移动目标",会添加和删除文件,因此很难将其添加到WebRole项目中不方便。

2 个答案:

答案 0 :(得分:0)

你不能拥有将文件存入此文件夹的代码,如果它不存在则创建吗?

除此之外,请按照您的建议将其添加到您的WebRole OData服务项目中。

答案 1 :(得分: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>