2012-08-10 96 views
4

defining a web role我可以指定<WebRole><Sites>元素下的网站。其中一个网站可以有一个名称"Web",然后我不需要指定physicalDirectory - 相反,网站内容将被复制到sitesroot文件夹中,并复制approot的内容并使服务包膨胀。“Web”网站和Windows Azure中的其他网站有什么区别?

因此,它看起来像是一个无脑的人 - 我应该为我的网站命名除"Web"之外的任何其他名称,并指定physicalDirectory,它会工作得很好,没有重复,因此体积更小。

有没有什么我通过命名我的网站获得"Web"?为什么我想给它命名"Web"给出了负面影响?

回答

3

许多个月后,我找不到与不断变化的网站名称,任何东西,除了Web并明确指定physicalDirectory任何问题。它只是工作。

它看起来像Azure工具的默认值是不合理的。我的.cspkg变小了,所以准备和减少卸载所需时间更少,浪费的时间更少。我希望我早点发现这一点。

+0

你为'physicalDirectory'设置了什么,通过将名称从'Web'改为其他名称,你获得了什么? – Guillaume 2014-06-30 15:14:49

+0

@Guillaume:我设置了一个相对路径,比如'.. \ ..\ RoleProjectFolderInHere'并且增益是一个明显更小的包和更快的包创建。 – sharptooth 2014-07-01 07:58:40

+0

谢谢,不幸的是,这只适用于本地构建,而不适用于构建TFS :( – Guillaume 2014-07-01 08:03:06

3

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

这只是表示它将使用RoleEntryPoint(WebRole.cs)的该项目的程序集。这就是为什么该项目的输出在批注中(这是执行RoleEntryPoint的地方)和siteroot(IIS网站)中使用的原因。

现在,如果你想保持你的包小,你确实可以创建一个虚拟的网站,只为WebRole.cs部分,并有一个真正的网站,除此之外。这将创建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应用程序看起来像这样:

enter image description here

+0

Em ...看起来我不需要这两个网站 - 我只是指定了'physicalDirectory',我的网站内容不再被重复。 – sharptooth 2012-08-10 08:59:55

+0

它实际上工作吗?你的WebRole.cs是否也执行过? – 2012-08-10 09:08:55

+0

是的,它和以前一样工作,只是没有重复。 – sharptooth 2012-08-10 10:19:13