defining a web role我可以在<WebRole><Sites>
元素下指定网站。其中一个网站可以使用名称"Web"
,然后我不需要为其指定physicalDirectory
,而是将网站内容复制到sitesroot
文件夹并复制{的内容{1}}并对服务包进行充气。
所以它看起来很简单 - 我应该将我的网站命名为除approot
以外的任何其他名称,并指定"Web"
,它会正常工作,没有重复,因此包装更小。
通过命名我的网站physicalDirectory
,我获得了什么?考虑到负面后果,我为什么要将其命名为"Web"
?
答案 0 :(得分:3)
“Web”站点只是您在向云项目添加WebRole时创建的新项目或您选择的现有项目。因此,WebRole的默认站点(Web)直接映射到该Web项目。
这只是意味着它将使用该项目的程序集用于RoleEntryPoint(WebRole.cs)。这就是为什么该项目的输出在approot(这是执行RoleEntryPoint的地方)和sitesroot(IIS网站)中使用的原因。
现在,如果你想保持你的包小,你确实可以创建一个仅为WebRole.cs部分服务的虚拟站点,除此之外还有一个真实的站点。这将在部署到Azure时创建3个“文件夹”:
您要做的是使用端点来确保通过为其提供内部端点来公开虚拟站点:
<WebRole name="MyWebRole" vmsize="Small">
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="DummyEndpoint" />
</Bindings>
</Site>
<Site name="RealWebApplication" physicalDirectory="..\MvcApplication1">
<Bindings>
<Binding name="Endpoint2" endpointName="RealEndpoint" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="RealEndpoint" protocol="http" port="80" />
<InternalEndpoint name="DummyEndpoint" protocol="http" />
</Endpoints>
...
</WebRole>
您的虚拟Web应用程序将如下所示:
答案 1 :(得分:3)
几个月后,我发现将网站名称更改为除Web
以外的任何内容并明确指定physicalDirectory
时出现任何问题。它只是有效。
看起来Azure工具的默认值是不合理的。我.cspkg
变小了,所以准备时间更少,卸载更少,浪费的时间也少得多。我希望我早点找到它。