微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Azure上动态创建WebSite

 

在Azure上动态创建WebSite

本文将介绍一种在已经部署的Webrole上动态创建一个WebSite的方法。当然,也可以使用Role的部署文件包来一同创建多个WebSite或多个Web虚拟目录,关于这种方法请参考我的另一篇文章WindowsAzure上把WebApp和WebService同时部署在一个WebRole中》。

1、 提升Webrole的权限为管理员权限。

在ServiceDeFinition.csdef文件中追加下面的配置。

  <Webrole name="MvcWebrole1" vmsize="Small">
    <Runtime executionContext="elevated"></Runtime>
  </Webrole>


 

2、防火墙上的端口屏蔽

在我们采用常规手段部署Site的时候,我们的应用程序要么使用相同的端口不同的HostName,要么使用不同的端口相同的IP地址。在Azure上,由于Azure只在部署文件包部署的时候在防火墙中打开了固定的端口(远程桌面连接的端口除外),所以,此处使用不同端口的方式很难行得通,没办法,我们也只有采用相同端口不同HostName的方式动态创建WebSite了。可以在Window Azure Management Portal查看哪个端口是开放的。

3、Microsoft.Web.Administration程序集

在创建WebSite的代码中需要引用Microsoft.Web.Administration程序集,该程序集在%WinDir%\System32\InetSrv目录中。由于在AzureHost的GAC中认不包含该程序集,所以,需要把该程序集的copy Local属性设置为true。

 

4、动态创建WebSite的代码

    string newWebsitePath = "Your app path";
    using (ServerManager serverManager = new ServerManager())
    {
        /* 创建 application pool */
        ApplicationPool applicationPool =
                serverManager.ApplicationPools.Add("MyApplicationPool");
        applicationPool.AutoStart = true;
        applicationPool.ManagedPipelineMode = ManagedPipelineMode.Integrated;
        applicationPool.ManagedRuntimeVersion = "v4.0";

        /*创建 web site */
        Site site = serverManager.Sites.
                Add("Mynewsite","http","*:80:www.mysite.com",newWebsitePath);
        site.Applications[0].ApplicationPoolName = "MyApplicationPool";
        site.ServerAutoStart = true;
        serverManager.CommitChanges();
    }

5、测试动态创建的WebSite

这也很简单,首先请在Window Azure Management Portal中找到你部署的Webrole的Ip地址,然后打开C:\Windows\System32\drivers\etc\hosts文件,比照如下的格式增加一条记录。

111.222.333.444    www.mysite.com

然后,在你的浏览器中输入www.mysite.com,看是不是已经看到你动态创建的Site了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐