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