在 Azure 云服务中向 sitesroot 添加一个额外的文件夹

Add an additional folder to sitesroot in Azure Cloud Service

我有一个 OData Web Api 服务,我正在将其部署为云服务。 我还有一个网站,它是用一些繁重的任务创建的,这些任务创建了一个 dist 文件夹,其中包含所有已编译的东西。

我现在要做的是将这个文件夹添加到Cloudservice项目中。 我已经尝试了建议 ,但这只会将文件夹复制到云服务的 approots,而不是 sitesroot/0/。 所以部署后网站无法访问

如何在构建到我的云服务时添加文件夹,使其成为可从 IIS 访问的文件夹? 例如,如果我希望可以通过以下方式访问我的 dist 文件夹: http://mysite.cloudapp.net/dist/ or http://mysite.cloudapp.net/client/

我可以把它添加到带有OData服务的WebRole项目中,但是这个文件夹是一个"moving target",会有文件的添加和删除,所以很难将它添加到WebRole项目中,非常不方便。

你有没有把文件存入这个文件夹的代码,如果不存在就创建一个?

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

这个问题的解决方案非常简单: 类似于此处附加内容文件夹的解决方案:

但不是将 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>