最近的一個項目結束了,花的時間一個月左右吧。。。。。
開發環境 win7+VS2012+MVC4(.net 4.0)+SQL SERVER 2008
部署環境 windows server 2003 + IIS6
注:我用的.net framework版本是4.0的,而不是4.5的。在后面我會說明為什么。
開發前對方說的是他們的服務器是windows server 2008R2 的,所以我才用了MVC4,想想在IIS7上部署MVC4是一件多么簡單的事。
做完去到之后才發現是03的,真是坑啊!不吐槽了,繼續重點。。。。
開發的過程就不描述了,重點只說MVC4的網站以及微軟自己帶的Reportview在IIS6中部署的注意事項
其中,在windows server 2003服務器中需要安裝的東西可以參見以下的博客
http://blog.csdn.net/g2321514568/article/details/21275265
其中的mvc3我是沒有安裝的,因為沒有用到。
而具體的IIS6.0的相應配置可以參考以下博客
http://www.cnblogs.com/anny-1980/articles/2616657.html
其中最常遇到的問題就是忘記將"Web服務擴展"中的"ASP.NET v4.0.30319" 的服務必須為“允許”,以及修改生成目錄的權限。
配置到上面的步驟,基於.net framework 4.0的MVC4程序已經能夠正常運行在windows server 2003 中了。
可是為什么我不選擇.net framework 4.5呢?當初也找了很多資料,貌似找的資料大部分都是說.net 4.5不支持windows server 2003,然后我也進行了測試
開發環境: win7+VS2012+MVC4(.net 4.5)
部署環境: 虛擬機 + windows server 2003 + IIS6
新建一個基本的MVC4(.net 4.5)項目,直接發布,然后部署,發現網站無法正常運行。。。。。

於是,手動修改項目的.net framework的版本為4.0
然后就出現了以下的錯誤

但我記得很清楚,項目中沒有用到這些程序集,所以就去找4.5和4.0的程序集,發現4.0下面壓根就沒有出現錯誤的那個程序集,可是我已經將項目的framework
版本降為4.0了,應該是不會出現這個問題才對啊!對這個問題有些疑惑(我是先新建的空白解決方案也是4.5的,可能是這里的原因)。但是如果是重新建一個
.net 4.0的MVC4項目,就能正常運行,不會出現上述錯誤。手動將版本降低,我覺得是很麻煩,也不願意這樣去浪費時間,也正是由於這個原因,我才直接將
項目的版本選為是4.0的,而不是4.5的(基於windows server 2003),如果是windows server 2008及以上版本,這個都不算是問題。這也只是我個人的觀點
如果發現我的錯誤,請各位園友及時指出。

最后要說的就是reportviewer(vs2012中的11.0的版本)在windows server 2003的部署問題。
由於我是在VS2012中使用的reportviewer這個報表,在測試項目中添加了webform窗體以及報表文件
發現項目發布后的竟然不包含報表文件!!!

這個問題的解決方案就是修改報表文件的屬性。。
當修改了報表文件的Build Action屬性之后

再次發布就可以看到相應的報表文件了

對於這個報表,我也是只用了幾次,真正部署的也就這一次。找到的大部分資料也只是8.0、9.0、10.0這三個版本,關於11.0這個版本的資料真的很少,找的資料也沒怎么說清楚
都是概括的說了一些,並不具體,普遍說的都是只需要下面的3個dll放在發布過后的bin目錄就可以正常運行
於是乎,將這幾個dll復制到生成的bin目錄下就去運行
結果還是不行,出現如下的錯誤:

最終經過多方尋找,也沒能解決這個問題的方案,然后我就根據這個錯誤,去找Microsoft.SqlServer.Types.dll這個鬼程序集,找的我淚流滿面,
找到之后,將它和之前的3個程序集一起添加到發布之后的bin目錄下,,再次瀏覽該網站即可看到報表了(這里就不截正常運行的圖片了。。)

這里用的是dll的方式,網上還有一種方式是在服務器直接安裝reportviewer.exe這個程序,這個我還沒有嘗試過,也不是很清楚是否能成功。
寫完才發現,這個報表的問題和MVC4的部署應該是兩個主題的才對。。。由於項目中都用到,所以就放在這一次性寫出來了,不再分開來寫了
可能有些地方描述的不是很清楚,還請各位園友多多見諒。
相關下載:
報表中用到的5個程序集的下載地址:

