在 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>
我有一个 OData Web Api 服务,我正在将其部署为云服务。 我还有一个网站,它是用一些繁重的任务创建的,这些任务创建了一个 dist 文件夹,其中包含所有已编译的东西。
我现在要做的是将这个文件夹添加到Cloudservice项目中。
我已经尝试了建议
如何在构建到我的云服务时添加文件夹,使其成为可从 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>