
其次,如何在服务器端部署这个Web Application呢?
你需要将上面这个Package目录全部复制,然后发送给服务器管理员。那么服务器管理员要怎么将这个Application部署起来呢?他有几种方式。
第一种方式,使用MS Deploy工具。
http://www.iis.net/download/webdeploy
这个工具是微软提供出来给IIS 6和IIS 7用的,可以很方便地进行应用程序部署。你可以通过上面的地址下载到。(值得一提的是,这个工具安装之前需要当前服务器安装了.NET Framework 2.0 sp1)

如果安装好了,我们打开IIS 之后会看到一些小的变化

大家可以看到,现在网站上面多出来一个“Deploy”的菜单,里面有几个菜单项,我们现在可以点击“Import Application”
首先,我们需要指定那个部署包的位置,是那个zip文件



【注意】这里可以修改连接字符串

【注意】因为检测到我们是.NET Framework 4的Web Application,所以会提示将Application Pool选择为.NET 4.0的,我们当然毫不犹豫地点击“yes”

很快就安装好了。它到底做了什么呢?其实它会把文件复制到wwwroot里面来

但是,这里需要注意的是,它是随机选择了一个.NET Framework 4.0 的Application Pool, 例如在我的机器上是这样的

有的时候,我们可能会发现程序运行不起来,例如

经验告诉我们,凡是503错误,多半是与应用程序池有关系。
我尝试重启这个程序池,问题依旧

然后,我发现这个程序池有些特殊之处在于它的Managed Pipleline Mode是Integrated,是不是这个有问题呢?
我尝试选择了一个Managed Pipleline Mode为Classic的应用程序池,例如

重新刷新一下就可以正常运行我的应用程序了

到这里,我们就完成了服务器端应用程序的部署。这个演练中,我们使用了MS Deploy工具。但事实上,不用工具也是一模一样可以做到的。
只要记住下面两点
1. 应用程序池要基于.NET Framework 4
2. 应用程序池的Managed Pipleline Mode要选择为Classic
最后,还有一个可能会遇到的问题,就是如果你的应用程序会连接到数据库,而且数据库连接字符串是像下面这样写的
Data Source=./sqlexpress;Initial Catalog=Northwind;Integrated Security=True
那么,大家要知道的一个情况是,因为你是Integrated security=true,所以最后访问数据库时所使用的身份是应用程序池的标识。那么,很显然地,你需要确保这个标识有访问数据库的权限。

【注意】如果是访问本地的服务器和数据库,为简单起见,你可以直接设置为LocalSystem。这个特殊帐号是肯定可以访问数据库的。
当然,更加严谨的做法,是指定一个特定的帐号,这个帐号被授予了特定数据库的访问权限。