zoukankan      html  css  js  c++  java
  • 如何在IIS上部署MVC网站

    这段时间用vs2010、.net framework4.0开发了一个小网站,用的是asp.net mvc2.0的框架实现的,一直也没有发布到IIS上测试过,每次都是在.net自带的虚拟web server上运行通过的,马上领导要看demo了,还是部署一下mvc的网站吧,以前从来也没有开发过mvc的项目,没想到部署mvc网站会遇到那么多的问题,不过今天忙了一天也总算把问题都解决了,现在抽空记录一下今天遇到的问题以及解决方案,免得以后还犯同样的错误,

    1、一开始发布是点击项目右键菜单中的“publish”,发现竟然有好几种发布方式,我就选了“Web Deploy”,试了好久都没有发布成功,算了,深入了解它的用法再用吧。于是,网上查找publish-->Web Deploy的资料,发现竟然都是英文,而且都是一些无用的篇幅,哎,好浪费时间,一两个Hour就这么没了,还是有空再研究吧。只能考虑常用的发布方式“File System”了,就是把网站需要的东西编译到指定文件夹。

    2、编译发布成功后,开始在IIS里建虚拟目录,设置asp.net版本为4.0,以及选到对应的应用程序池等,然后在浏览器中输入地址,出现"The page cannot be found"。也是mvc网站的路径本来就跟以往.net的网站不一样,这样随便设置一下就行了才有问题呢,于是又是一顿搜索。先是在google上找,一篇篇相关问题的英文帖子,看着就头大,问题倒是有很多人遇到,却没有人能给出个满意的答案,而后转到微软官方网站上找,有人建议安装Web Deploy Tool,我想不就是个简单的发布吗?用不着再安装软件了吧,目前我的机器已经安装了够多的微软软件了,所以不到万不得已不想安装这东西,继续埋头搜索资料,可能还是搜索的关键字有问题吧,搜来搜去总是同样的问题同样的结果,弄得我都有点疲了。

    3、于是,静下来想了想,还是看看mvc2.0的相关书籍吧,翻开前段时间下载的ASP.NET MVC 2 in Action.pdf,呵呵,竟然能找到答案,在第六章“Hosting
    ASP.NET MVC applications”中有详细说明,针对每种的Web Server版本也都有说到如何去配置,于是直接找到IIS6.0下的配置,有四种:
    ■ Configure routes to use the .aspx extension
    ■ Configure routes to use a custom extension (such as .mvc)
    ■ Use a wildcard mapping with selective disabling
    ■ Use URL rewriting

    大概都看了一下,选用第三种,设置如下:
    在虚拟目录-->右键属性-->虚拟目录标签下-->点击“配置”按钮,在出现的对话中,对通配符进行插入操作,可执行文件选c:/windows/microsoft.net/framework/v4.0.30319/aspnet_isapi.dll,去掉“确认文件存在”,点击确定。同时确保Web服务扩展中asp.net v4.0.30319服务是被允许的,再重启IIS。

    这时候去浏览器刷新,上次的问题没了,可页面一片空白,什么也没有。于是继续看pdf,原来后面有讲到Content\Scripts\Images\Bin等文件夹要特殊处理,因为mvc框架只对views文件夹下的文件进行特殊路由,其他文件夹的访问路径不变,需要把其他文件夹在IIS中进行如下设置:
     




    再刷新网页,看出body的颜色有变化了,看来应该css文件是读到了,在页面上写alert脚本测试也ok,但在用到jquery脚本的地方就有问题了,于是把所有的引用路径修改成绝对路径,jquery的脚本也OK了,可页面还是没有出来,还把System.Web.Abstractions、System.Web.Routing、System.Web.Mvc的DLL都拷贝到bin下也还是不行。

    初步以为是发布的问题,于是又回头找发布相关资料,还是很无助,实在没办法了就找了WebDeploy_2_10_x86_en-US.msi和WebDeploymentSetup.msi都安装了一遍,也都按着它们说的步骤去发布,还是一样。

    哎,可能还是脑子想问题想久了累了,不愿再想了,才去找发布工具,其实问题根本不在发布工具上,即使真的安装了发布工具,问题肯定还是有的啊,脑子当时怎么就转不过弯呢,

    最后还是请教了高手,高手就是高手,处理问题的方式都不一样,他提醒我看一下firebug返回的信息,果然,一看问题就被找出来了,是服务器端出了问题,在Ajax资源请求的过程中,返回“500 Internal Server Error”错误,仔细看原来是访问数据库的时候出错。vs2010项目在发布的时候竟然把web.config中Entity的数据库连接字符串修改了,枉费我花了那么时间去找一些发布上的问题,以前从来没遇到过这种系统发布时会擅自修改连接字符串的情况,这次算是记住了。

    虽说是花了好多时间,就当买个教训吧,但是总的来说收获还是比较大的:
    1、找到了发布mvc时需要进行的一些设置,也算学会了如何发布mvc项目吧;
    2、学会了别人处理问题的方式;
    3、对vs2010、ado.net entity有了新的认识。






  • 相关阅读:
    css bug(ie6兼容问题)
    css样式之vertical-align垂直居中的应用
    css浮动
    样式属性(1)
    DOM对象,控制HTML元素(1)
    用户注册
    Kaggle竞赛 —— 泰坦尼克号(Titanic)
    Spring框架第六篇之Spring与DAO
    Spring框架第五篇之Spring与AOP
    Spring框架第四篇之基于注解的DI注入
  • 原文地址:https://www.cnblogs.com/yumianhu/p/3713008.html
Copyright © 2011-2022 走看看