我用vs2015寫了個小網站,.Net Framework4.5、 mvc 5,發布到本機iis上正常,在美橙申請了一個雲虛擬機,發布過程中遇到的一些問題記錄如下:
1、服務器支持的版本比較低
上傳後打開網站顯示:
HTTP 錯誤 404.0 - Not Found
您要找的資源已被刪除、已更名或暫時不可用。
詢問美橙的技術支持,說只能支持到.net framework4.0、mvc4。
沒辦法只好試著降低版本。在vs2015中把解決方案中所有的項目目標框架都改為.net framework4.0 , 在NuGet中把mvc5卸載,安裝mvc4,立刻出現了一堆的錯誤,尤其是實體類的一些擴展的部分類中的特性
[MaxLength(128, ErrorMessage = "典型客戶長度不能超過128個字符")]
都無法識別。引用的庫不一致的版本很多,無從下手。
2、缺少一些dll文件
於是干脆下了個vs2012,在vs2012中重新建解決方案,選擇ASP.NET MVC4 Web應用程序,目標框架選擇.net framework4.0 ,暫時只建了一個控制器home,一個視圖index,在本地通過之後,再上傳到雲虛擬機中,依然404錯誤。
再與美橙的技術人員聯系,對方幫我開啟了詳細報錯。
我在web.config中加入了
<system.web> <customErrors mode="Off" /> </system.web>
再訪問網站,提示無法加載......
於是按照提示,分別上傳了:System.Net.Http.Formatting.dll、System.Web.Http.dll、System.Web.Http.WebHost.dll,終於可以看到我的視圖了。
3、加入UEditor後Newtonsoft.Json的版本問題
用vs2012重新建各個項目,把原vs2015解決方案中的各個項目逐個的拷貝過來。
拷貝了插件UEditor之後,再運行一直提示:未能加載文件或程序集“Newtonsoft.Json, Version=4.5.0.0...... ,再查看引用的是UEditor\net\Bin中的Newtonsoft.Json.dll,版本為6.0.2.16931,我移除引用,重新引用packages\Newtonsoft.Json.4.5.6\lib\net40中的Newtonsoft.Json.dll,然而再查看引用的Newtonsoft.Json屬性,依然還是UEditor\net\Bin中6.0版本的Newtonsoft.Json,我有點糊塗,為什麼重新引用不生效呢?
費了很大周折,最後通過修改web.config文件
<!--解決加入UEditor後,提示未能加載文件或程序集“Newtonsoft.Json, Version=4.5.0.0......的錯誤--> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime>
將所有版本的Newtonsoft.Json都指向當前6.0版本,這個問題解決。
4、401.3錯誤
把vs2012寫的程序,在本地調試通過後,再上傳,訪問網站提示401.3錯誤,應該是權限問題,再請美橙的技術處理一下,靜態的html頁可以顯示,但home/index依然無法打開,也不顯示詳細的錯誤提示,根據查到的方法在web.config中加入
<system.webServer> <validation validateIntegratedModeConfiguration="false"/> <!--上傳到雲虛擬機後,必須加這個配置項才能打開網頁--> <modules runAllManagedModulesForAllRequests="true" /> </system.webServer>
終於看到無法加載文件的詳細提示,再按提示上傳那三個文件到bin,再訪問網站,終於可以正常運行了。
5、還是要贊一下美橙的技術支持人員,回答、解決問題非常迅速、耐心。