在线
客服

在线客服
尊敬的客户,我们24小时竭诚为您服务 公司总机: 0755-83312037 (32条线)

客服
热线

0755-83312037 (32条线)
7*24小时客服服务热线

?

关注
微信

关注官方微信

返回
顶部

IIS6下部署ASP.NET MVC应用程序

发布时间:2018-05-17浏览次数:724
<p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">ASP.NET MVC在IIS6下部署的小技巧.</font> </td> </tr></tbody></table> <p>通常在IIS6下部署ASP.NET MVC应用程序的时候,都是直接设置把所有请求都交由ASP.NET的ISAPI处理。MVC是基于ASP.NET的,框架默认对于任何请求都会优先检查物理路径是否存在物理文件,如果存在的话就不通过MVC的路由机制,否则才走路由。</p> <p>因此,如果在不考虑控制静态资源权限的情况下,可以设置静态资源不通过ASP.NET的ISAPI,而直接由IIS处理,通过这种方式提升一些性能。本文围绕这个主题,详解部署过程。</p> <p>0.在设计MVC网站的时候,把静态资源统一放在一个文件夹下,建议目录结构使用小写字母</p> <p>1.把web应用程序发布到某个路径下(略)(顺便提一句,MVC2功能上比MVC3弱一些,用到的组件很少,可以直接私有部署System.Web.Mvc;但是MVC3因为功能增加,而且引入了Razor引擎,依赖的组件增多,建议在部署的时候直接安装MVC3)</p> <p>2.创建一个web站点(略)</p> <p>3.右击创建的web站点,选择属性,切换到Home Directory页</p> <p align="center"><img border="0" alt="clip_image001" src="http://www.webjx.com/files/allimg/110525/0730050.png" width="412" height="400"></p> <p>4.点击Configuration,在Wildcard application maps中,点击Insert,添加C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll,取消Verify that file existsg的勾选。(如果使用MVC2的话,可以到2.0下去找这个dll。这里去掉对静态文件的验证是关键,这使得asp.net处理所有的请求)</p> <p align="center"><img border="0" alt="clip_image001" src="http://www.webjx.com/files/allimg/110525/0730051.jpg" width="416" height="402"></p> <p>5.点OK</p> <p align="center"><img border="0" alt="clip_image001[6]" src="http://www.webjx.com/files/allimg/110525/0730052.png" width="412" height="454"></p> <p>6.允许ASP.NET 4.0扩展</p> <p align="center"><img border="0" alt="" src="http://www.webjx.com/files/allimg/110525/0730053.jpg" width="570" height="294">&#160;</p> <p>7.content目录是静态资源放置的目录,设置content目录下请求直接由IIS处理以提高性能。右击content,属性</p> <p align="center"><img border="0" alt="clip_image001[6]" src="http://www.webjx.com/files/allimg/110525/0730054.jpg" width="405" height="377"></p> <p>8.点击create,再点击configuration,移除Wildcard application maps下的内容。点击OK。这里利用了IIS的一个bug,把目录设置成虚拟目录,删除Wildcard application maps的设置,这样这个虚拟目录的请求就直接由IIS处理了。</p> <p align="center"><img border="0" alt="clip_image001[8]" src="http://www.webjx.com/files/allimg/110525/0730055.png" width="403" height="443"></p> <p>9. 再点击Remove,把虚拟目录恢复成普通目录。这样只有这个目录下的文件会受到IIS的“眷顾”</p> <p align="center"><img border="0" alt="clip_image001[10]" src="http://www.webjx.com/files/allimg/110525/0730056.png" width="411" height="385"></p> <p>10.设置AppPool权限。点击站点使用的AppPool的属性,切换到Identity,选择Local System。这是偷懒的设置方法,以避免出现应用程序本身对系统的访问权限不够</p> <p align="center"><img border="0" alt="clip_image001[14]" src="http://www.webjx.com/files/allimg/110525/0730057.png" width="399" height="376"></p> <p>11.设置匿名访问权限。右击站点,选择权限。点击Add…,在弹出的对话框中输入IUSR_XXX(XXX为机器名)。</p> <p align="center"><img border="0" alt="clip_image001[16]" src="http://www.webjx.com/files/allimg/110525/0730058.png" width="494" height="266"></p> <p>点击OK,便可添加一个Internet Guest Account,保持默认的只读权限即可。</p> <p align="center"><img border="0" alt="clip_image001[18]" src="http://www.webjx.com/files/allimg/110525/0730059.png" width="402" height="484"></p> <p>12.最后注意,如果是首次安装.NET 4.0,不要忘了注册</p> <p align="center"><img border="0" alt="" src="http://www.webjx.com/files/allimg/110525/07300510.jpg" width="550" height="160">&#160;</p> <p>在深入理解ASP.NET MVC(2)中,讨论过MVC框架的路由机制,其中提到“可以通过设置RouteCollection的RouteExistingFiles为true,使得路由不匹配静态文件(注意true是不匹配,这个命名和奇怪)。”因此,我们可以这样设置,以使得MVC不对静态文件进行检查,这样又可以提高一点性能。最终请求会像下图那样被serve</p> <p align="center"><img border="0" alt="" src="http://www.webjx.com/files/allimg/110525/07300511.jpg" width="225" height="183">&#160;</p>