在Azure上动态创建WebSite
本文将介绍一种在已经部署的Webrole上动态创建一个WebSite的方法。当然,也可以使用Role的部署文件包来一同创建多个WebSite或多个Web虚拟目录,关于这种方法请参考我的另一篇文章《WindowsAzure上把WebApp和WebService同时部署在一个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] 举报,一经查实,本站将立刻删除。