作者nanaseliin (哇系奥希卡)
看板MIS
标题Fw: [心得] Server 2008 SP2 执行MVC5
时间Sun Jan 8 21:16:57 2017
MIS可能需要帮忙架环境 所以转来这
※ [本文转录自 Web_Design 看板 #1OSWqfLZ ]
作者: nanaseliin (哇系奥希卡) 看板: Web_Design
标题: [心得] Server 2008 SP2 执行MVC5
时间: Sun Jan 8 17:57:57 2017
以下内容也适用於 Server 2008R2的环境执行MVC5
好读网页板:
http://bw49mm.blogspot.tw/p/server2008.html
以下是实作部分(使用Hyper-v 安装Server实作)。
一、Server 状态
Server 2008 在Hyper-V下需升级至SP2才能安装整合服务光碟。
http://i.imgur.com/J09kPU7.png
http://i.imgur.com/z4C0nr6.png
Server IP
http://i.imgur.com/wNxvr1y.png
Server 2008 SP2 安装的程式,这台有装SQL Server 2012 Express,就莫名装了超多东
西在里面
http://i.imgur.com/kOXOB1W.png
http://i.imgur.com/dgkKD9X.png
IIS管理画面,我新增MVC5和MVC5Login两个站台测试
http://i.imgur.com/rrkKYJc.png
IIS7 可以正常执行
http://i.imgur.com/kIfuBzJ.png
二、MVC5在Server 2008 SP2 IIS7 执行的步骤实作
实作之前,我已将Server 2008升级至SP2,安装IIS、
安装Web Deploy、SQL Server 2012 Express(这是我自己测试用,不用安装)。
安装IIS及Web Deploy可以参考天空垃圾场 Sky哥的文章:ASP.NET MVC - 使用Web
Deploy布署MVC应用程式到IIS。
http://blog.sanc.idv.tw/2014/08/aspnet-web-deploymvciis.html
Local端使用IIS Express可以浏览
http://i.imgur.com/nvtxr6G.png
Web Deploy 设定好上传罗
http://i.imgur.com/yKM4TNI.png
Local端开启网址後出现403错误讯号
http://i.imgur.com/oTIgJqE.png
在Server 2008端开启网页 也出现错误
HTTP Error 403.14 – Forbidden
The Web Server is configured to not list the contents of this directory.
http://i.imgur.com/Q8seidy.png
Server 2008 SP2 调整步骤-01
IIS管理介面开启後看Application Pools MVC5的站台,
原本是设定.NET Framework2.0,改为 .Net Framework4.0
http://i.imgur.com/eed0GD8.png
Server 2008 SP2 调整步骤-02
MVC5使用 .NET Framework 4.5.2 所以Server 2008 SP2 需安装.NET Framework 4.5.2
才能正常使用
http://i.imgur.com/xASS5Xo.png
Server 2008 SP2 调整步骤-03
在Server 2008 SP2 下载安装完整版的 .NET Framework 4.5.2後,开启程式和功能检查
是否有安装成功
http://i.imgur.com/BHhJvnz.png
Server 2008 SP2 调整步骤-04
开启IIS 管理介面,开启Modules
http://i.imgur.com/4Tlrj6y.png
Server 2008 SP2 调整步骤-05
确认Modules的UrlRoutingModule-4.0 中 Modules Type 及 Entry Type 是否为Managed
及 Local
(Modules Type = Managed 及 Entry Type = Local)。
http://i.imgur.com/NIkJ8Nf.png
Server 2008 SP2 调整步骤-06
到MVC 5 程式主目录下的Web.config加入以下内容
<system .webserver="">
<modules>
<remove name="UrlRoutingModule-4.0"></remove>
<add name="UrlRoutingModule-4.0" precondition=""
type="System.Web.Routing.UrlRoutingModule"></add>
</modules>
</system>
http://i.imgur.com/MBVx3d1.png
Server 2008 SP2 调整步骤-07
开启网页後,怪怪!!怎麽和在IIS Express看起来不一样
http://i.imgur.com/qYOgBS5.png
Server 2008 SP2 调整步骤-08
先在Chrome按『F12』开启『开发人员工具』,发现有好多引用错误。
IIS7 似乎无法处理MVC5 Bundle。
http://i.imgur.com/HxDKmio.png
题外话:MVC5 Bundle问题
关於MVC5 Bundle问题稍微Google一下,参考网路文章:MVC 4发行至IIS 7.5之後
Bundle功能无法运作,也无法处理,我是MVC5,MVC4的处理方式不适用。
另外Bundle也可以参考:Where Did My ASP.NET Bundles Go in ASP.NET 5? 这篇文
章。
因为这是Server 2008 SP2 IIS7 执行MVC5实作文章,不讨论MVC5设计,所以我使用
VS2015自动产生MVC5的程式;如果你要自己设计MVC5,还是乖乖地从无到有自己刻程式,
如果你使用VS2015自动产生的MVC5程式,会不知道程式怎麽来的,东西放哪边,还是自己
刻吧。
关於Bundle问题,文章後面会试着使用Server 2012 R2 IIS8 去处理看看。
Server 2008 SP2 调整步骤-09
因为知道是Bundle问题,所以到_Layout.cshtml 直接引用所需JS与CSS
http://i.imgur.com/YdQypxq.png
Server 2008 SP2 调整步骤-10
改好再上传一次浏览就正常啦,但Bundle还是错误….. 我不想解释
http://i.imgur.com/HO7TFwN.png
以上内容是在Server 2008 SP2 IIS7下执行MVC5的实作,经过修改後可正常执行。
下面内容是我在执行Session时发生错误的处理方式,可以参考看看。
三、Session 错误
在Server 2012 R2 IIS8环境中程式套用Session之後,不会遇到错误,
但是在server 2008 SP2 IIS7 就有无限可能。
依造上面的做法建立另一个MVC5Login站台给Session使用。
以下程式在Global.asax.cs 套用Session之後上传
http://i.imgur.com/tw02onJ.png
一浏览就出现问题啦,发生错误,下面讯息说如果你想知道发生什麽错误,请在
Web.config加入该属性。
http://i.imgur.com/sbbhO1E.png
於是跑到Web.config加入该属性。
http://i.imgur.com/sLGMtVc.png
上传浏览後,发现是index.cshtml的Session那行有问题。
PS:之前有遇过同样问题显示_LayoutPage出错,没有明确说是哪里错,
所以要自己判断是哪里错罗,我推测Session引用先後顺序的不同,才会在不同页面出现
错误。
http://i.imgur.com/AsipaBs.png
我有Google一下发现stackoverflow有相关的讨论:Session is not working in
windows server 2008 r2 ,
他要我们加入Session的引用属性即可。
<system .webserver="">
...
<modules>
<remove name="Session">
<add name="Session" type="System.Web.SessionState.SessionStateModule">
...
</add></remove></modules>
</system>
一样到主目录的Web.config加入上述属性。
http://i.imgur.com/bCyj2A7.png
修改後再上传,就可以浏览啦。记得把刚刚在Web.config加入的『customError
mode="Off"』停用!!
http://i.imgur.com/VNIhOvC.png
四、Server 2012 R2 IIS8 测试 MVC5 Bundle
刚刚讲到Server 2008 SP2 IIS7 对於MVC5 Bundle会编译错误,Session也要额外设定,
现在用Server 2012 R2 IIS8 试试看罗。
Server 2012 R2 IIS8 相关资讯
http://i.imgur.com/3zUzBU5.png
http://i.imgur.com/7iEW2Pl.png
http://i.imgur.com/6E1OICX.png
http://i.imgur.com/12IcRSn.png
_Layout.cshtml注解刚刚加入的JS和CSS,以及注解在Server 2008 SP2 环境中设定的
Web.config 参数
http://i.imgur.com/QODvGlY.png
http://i.imgur.com/98TxUvm.png
上传浏览,怎麽会有问题哩!
http://i.imgur.com/MuGmIow.png
一样加入『customError mode="Off"』属性後再上传看看,原来Server 2012 R2 没有安
装.NET Framework 4.5.2
http://i.imgur.com/DYkmQiw.png
回到Server 2012 R2 安装.NET Framework 4.5.2
http://i.imgur.com/okAl4kP.png
之後再浏览就没问题啦
http://i.imgur.com/ISvMMeo.png
回到刚刚Session的专案,注解刚刚加入UrlRoutingModule-4.0和Session属性
http://i.imgur.com/0psKaLC.png
Session在Server 2012 R2 IIS8也没问题
http://i.imgur.com/dK7CJ4g.png
--
菩提本无树,明镜亦非台;
本来无一物,何处惹尘埃。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.38.8.167
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Web_Design/M.1483869481.A.563.html
※ 编辑: nanaseliin (114.38.8.167), 01/08/2017 17:59:42
1F:推 Ammenze: 感谢分享 01/08 20:31
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: nanaseliin (114.38.8.167), 01/08/2017 21:16:57
※ 编辑: nanaseliin (114.38.8.167), 01/08/2017 21:18:06
2F:推 purplvampire: 推 01/09 08:33
3F:推 aeolus0829: 感恩 01/09 09:08