5

定义网络角色时,我可以在<WebRole><Sites>元素下指定站点。其中一个站点可以有一个名称"Web",然后我不需要指定physicalDirectory它 - 相反,站点内容将被复制到sitesroot文件夹中并复制服务包的内容approot并扩展服务包。

所以它看起来很简单 - 我应该为我的网站命名任何其他名称,"Web"而不是指定physicalDirectory,它会工作得很好,没有重复,因此是一个更小的包。

通过命名我的网站有什么好处"Web"吗?"Web"考虑到负面后果,我为什么要命名它?

4

2 回答 2

4

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

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

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

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

您要做的是使用端点来确保虚拟站点不会通过给它一个内部端点来暴露:

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

在此处输入图像描述

于 2012-08-10T08:54:12.893 回答
3

几个月后,除了Web明确指定physicalDirectory. 它只是工作。

看起来 Azure 工具的默认设置是不合理的。我.cspkg变得更小了,因此准备和卸载所需的时间更少,我浪费的时间也少得多。我希望我早点找到这个。

于 2013-03-01T12:37:23.383 回答