设为首页 收藏本站
查看: 1090|回复: 0

[经验分享] 微软ASP.NET站点部署指南(5):部署到IIS上作为测试环境

[复制链接]

尚未签到

发表于 2015-8-12 13:28:49 | 显示全部楼层 |阅读模式
1.  综述
  开发程序的时候,通常我们是在Visual Studio 里测试,默认使用的是Visual Studio Development Server(Cassini),使用这个可以让我们开发测试工作更容易,但是在IIS上可能不一定能够正常工作。所以,结果可能是在Visual Studio 里运行正常,但是一旦部署到IIS上就会出错。
  你可以通过下面一些方法来测试确保你的程序没问题:


  • 开发的时候,使用IIS Express或者正式版IIS代替默认的Visual Studio Development Server来测试程序,这样可以更能确保在IIS下少出问题。但是这个方法不能测试你的部署流程是否正确,或者验证部署结构。
  • 部署程序到你的开发机上的IIS,然后用同样的步骤部署到生产环境,这样验证你的部署流程和是否能在生产环境运行成功。
  • 部署到和生产环境接近的测试环境,由于生产环境是第三方的提供商,所以最理想的测试环境就是提供商开放第二个账户(仅用于测试目的),这样就可以和正式的生产环境使用一样的部署步骤了。
  本章节演示的是第二种方式,第三种方式可以在第七章尾部讲到,另外本章节的底部有第一种方式需要用的资源连接地址。
  
  提醒:如果根据本章节所做的操作出现错误信息或一些功能不正常的话,请务必check Troubleshooting页面。

2.  配置程序运行在Medium Trust上
  安装IIS和部署之前,我们需要修改Web.config文件以便配置更能接近共享主机环境。主机提供商通常会让你的程序运行在medium trust级别上,那就是说有些事情是不允许做的,比如你不能访问注册表或者你程序之外的目录读写文件。本机默认情况下是运行在high trust上,也就是有些你可以做的事情在生产环境上可能做不到了。因此,为了确保部署到生产环境没问题,需要将测试环境的运行配置也改成medium trust
  
  在Web.config文件里,在system.web元素节点里添加<trust>元素,像下面一样:



<configuration>
  <!-- Settings -->
  <system.web>
    <trust level="Medium"/>
    <!-- Settings -->
  </system.web>
</configuration>
  
  现在程序可以运行在medium trust上了,这样你可以尽早发现需要high trust才能运行的错误了。

3.  安装IIS和Web Deploy
  你必须先安装IIS和Web Deploy 才能将程序部署到你开发机的IIS上。因为默认Windows 7是不安装这些组件的,如果你已经都安装了,那请忽略这个section。
  强烈推荐使用Web Platform Installer安装IIS和Web Deploy,,因为会自动安装IIS的推荐配置和自动安装IIS和Web Deploy所需要的依赖软件。
  使用Web Platform Installer安装IIS和Web Deploy,请使用下面的连接,如果你曾经安装过其中的一种或者是相关的依赖软件,那Web Platform Installer只会安装剩余的部分。


  • Install IIS and Web Deploy using WebPI

4.  设置默认的应用程序池为.Net4
  安装IIS以后,运气IIS管理器(开始->运行,输入inetmgr,回车),确保默认程序池使用的.NET Framework版本是4。
  在连接Connections)面板,展开server节点选择应用程序池Application Pools),在右边的面板里,查看DefaultAppPool使用的.NET framework版本是否是v4.0,如果是,请忽略此section。
  
DSC0000.png
  如果你只能看到2个应用程序池,并且都是.NET Framework 2.0的话,你需要在IIS里安装ASP.NET 4,然后再配置IIS才能使用。
  打开一个command prompt窗口,右键选择以管理员身份运行(Run as Administrator),然后运行aspnet_regiis.exe来安装ASP.NET 4到IIS里。使用如下命令:



cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –iru
DSC0001.png
上面的命名将会为.NET Framework 4创建2个应用程序池,但默认版本还是v2.0的。因为需要将程序部署到.NET 4的应用程序池上,所以需要修改它们的版本为NET 4。

重新运行IIS管理器,点击应用程序池,重新查看右边的面板,点击DefaultAppPool,然后在操作面板Actions)里点击基本设置Basic Settings)。

  
DSC0002.png
  在编辑应用程序池Edit Application Pool)对话框里,将.NET Framework version里的项修改成.NET Framework v4.0.30319,然后点击确定OK)。
  
DSC0003.png
  现在就可以将程序发布到IIS上了。

5.  发布到IIS
  使用Visual Studio 2010和Web Deploy部署有几种方式:


  • 使用Visual Studio one-click发布
  • 创建部署包,然后使用IIS Manager 管理控制台安装,部署包是一个.zip文件,包含了所有需要部署到IIS上的文件和元数据
  • 创建部署包,然后使用命令行安装
  前面的章节都提到了这三种方式的Visual Studio自动部署设置方式。本章节用的是第一种。更多使用部署包的信息,可以查看ASP.NET Deployment Content Map。
  发布之前,确保你的Visual Studio是运行在管理员模式下(开始菜单,右键Visual Studio 2010,选择以管理员身份运行)。
  改变当前active的build配置是Test,你可以从工具栏选择(如下图),或者从编译(Build菜单里的配置管理器Configuration Manager)里选择。
DSC0004.png
  Solution Explorer里,右键ContosoUniversity项目,选择发布(Publish),弹出Publish Web对话框。
  
DSC0005.png
设置profile名称为"Test",如果没看到文本框,而是看到下拉菜单就选择new ,然后输入新名称。

Service URL里输入“localhost”

Site/application里输入"Default Web Site/ContosoUniversity"

选择上Mark as IIS application on destination。(有些情况不需要部署到IIS上,例如项目本身就不是个web程序,它仅仅包含了一些图片,XML文件等,这种情况就不用选择了,以便不建立IIS程序。)

  
DSC0006.png
  点击发布(Publish),如果你收到如下信息框,请重新以管理员身份运行Visual Studio。
  
DSC0007.png
  如果你关掉Visual Studio,例如以后的章节来重新打开它再发布的时候,请务必选择以管理员身份运行,如果不是管理员身份,发布程序不会提示出错框而是尝试发布,有时候可能会提示一个没有权限的错误信息。
  如果是运行在管理员模式下,Output窗口会显示编译和发布成功的信息。
  
DSC0008.png
  运行IIS管理器,在连接(Connections)面板里,你可以在默认站点(Default Web Site)下看到一个名字为ContosoUniversity的应用程序,如果之前都打开了IIS,你点击刷新(Refresh)。在操作(Actions)面板点击浏览(Browse *:80 (http))来验证是否可以打开你的首页。
  
DSC0009.png
  不出错的话,浏览器就会显示Contoso University项目的首页了。
  
DSC00010.png

6.  在测试环境中测试
  打开浏览器访问http://localhost/ContosoUniversity,重新运行首页,可以看到页面顶部显示的标示符是"(Test)"而不是"(Dev)"了,这就意味着Web.config的transformation结果是正确的。
  
DSC00011.png
  打开Students页面验证部署的数据库里布包含任何students:
  
DSC00012.png
  打开Instructors页面验证这些数据依然存在于数据库中:
  
DSC00013.png
  在Students菜单里选择Add Students,添加一个student,然后可以看到Students 页面显示了一个student,说明已经成功保存到数据库里了:
  
DSC00014.png
  
DSC00015.png
  从Courses菜单,选择Update Credits,因为该页面需要administrator权限,所以跳转到了Log In页,输入administrator账户信息("admin" 和 "Pas$w0rd")登录以后, Update Credits就显示了,这就验证了上个章节创建的administrator账户已经正确的部署到测试环境了。
  
DSC00016.png
  
DSC00017.png
  检查Elmah文件夹是否存在并且值包含一个placeholder文件,这就验证了前面章节设置的忽略部署该文件夹的XML文件执行成功了。
DSC00018.png
  打开C:\inetpub\wwwroot\ContosoUniversity 目录下的Web.config文件验证Code First数据库初始化参数值为Disabled:
  
DSC00019.png
  现在,你成功将程序部署到你开发机的IIS上并且测试了,这验证了部署流程不仅仅只是copy程序内容(也可以排除不需要部署的内容了),另外Web Deploy也成功配置了IIS站点。下一章节你将测试另外一个还没搞定的部署任务:设置Elmah文件夹的写权限。

7.  更多信息
  关于在Visual Studio 里运行IIS或IIS Express的更多信息,请查看下面列出的资源:


  • IIS Express Overview
  • Introducing IIS Express
  • How to: Specify the Web Server for Web Projects in Visual Studio.
  • Core Differences Between IIS and the ASP.NET Development Server
  • Test your ASP.NET MVC or WebForms Application on IIS 7 in 30 seconds

该帖提供了很多例子解释为什么使用Visual Studio Development Server (Cassini)测试不如使用IIS Express测试可靠,以及为什么在IIS Express里测试没有在IIS正式版里测试可靠的原因.

  关于Visual Studio 2010里的自动化部署工具以及关于one-click发布和部署包更多的信息,请访问:ASP.NET Web Application Project Deployment Overview。
  关于主机提供商将程序运行在medium trust有可能引起的问题,请访问:Hosting ASP.NET Applications in Medium Trust。
  
总目录更新地址:点击访问

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-97977-1-1.html 上篇帖子: 发布Silverlight+WCF程序到IIS后,客户端访问数据库失败的解决方案 下篇帖子: 当前标识(IIS APPPOOL\DefaultWebSite)没有对“C:\Windows\Microsoft.NET\Framework64\v2.0.50
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表