“Web”网站与Windows Azure中的其他网站有什么区别?

时间:2012-08-10 07:22:10

标签: azure package

defining a web role我可以在<WebRole><Sites>元素下指定网站。其中一个网站可以使用名称"Web",然后我不需要为其指定physicalDirectory,而是将网站内容复制到sitesroot文件夹并复制{的内容{1}}并对服务包进行充气。

所以它看起来很简单 - 我应该将我的网站命名为除approot以外的任何其他名称,并指定"Web",它会正常工作,没有重复,因此包装更小。

通过命名我的网站physicalDirectory,我获得了什么?考虑到负面后果,我为什么要将其命名为"Web"

2 个答案:

答案 0 :(得分:3)

“Web”站点只是您在向云项目添加WebRole时创建的新项目或您选择的现有项目。因此,WebRole的默认站点(Web)直接映射到该Web项目。

这只是意味着它将使用该项目的程序集用于RoleEntryPoint(WebRole.cs)。这就是为什么该项目的输出在approot(这是执行RoleEntryPoint的地方)和sitesroot(IIS网站)中使用的原因。

现在,如果你想保持你的包小,你确实可以创建一个仅为WebRole.cs部分服务的虚拟站点,除此之外还有一个真实的站点。这将在部署到Azure时创建3个“文件夹”:

  • approot =&gt;包含虚拟站点的非常小的目录
  • sitesroot \ 0 =&gt;包含虚拟站点的非常小的目录
  • sitesroot \ 1 =&gt;你的真实网站

您要做的是使用端点来确保通过为其提供内部端点来公开虚拟站点:

  <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应用程序将如下所示:

enter image description here

答案 1 :(得分:3)

几个月后,我发现将网站名称更改为除Web以外的任何内容并明确指定physicalDirectory时出现任何问题。它只是有效。

看起来Azure工具的默认值是不合理的。我.cspkg变小了,所以准备时间更少,卸载更少,浪费的时间也少得多。我希望我早点找到它。