IIS部署+CSHTML的訪問血淚路


之前一直用VS學習開發winfrom,主要是web比較難學,學的東西太多太雜,還有一點就是部署和維護比較麻煩,無奈web眼瞅着要一統天下,也得跟上時代的步伐,開始慢慢接觸吧。學了幾個簡單頁面,用VS自帶的IIS Express立馬就可以看到效果,

就想着嘗試一下正式的web部署,以及嘗試類似aspx文件那樣直接訪問CSHTML文件,結果踩了好多坑,費了好大勁。網上的文章一大抄看了N多,大多不解決實際問題,也沒找到解決方案,今天突然一下子找到了思路,解決了困擾好長時間的問題。

IIS部署有好多新鮮的概念,我這樣的初學者真的一臉懵逼,什么應用程序池、集成管道、虛擬目錄,新概念撲面而來。

VS開發的頁面用自帶的IIS Express很容易就跑起來,結果正式部署到IIS里死活是錯誤。下面把我的試錯總結一下,能幫助后來者少走彎路,也算是不枉我一番心血。

第一個關鍵點:網站綁定時,要么填IP地址(本地測試用127.0.0.1或你計算機的局域網IP地址),要么填主機名字(本地測試用localhost或你計算機的名字),不要同時填,否則很可能無法正常訪問。

通常都填IP地址,不填主機名字,但是VS有一個功能:Visual Studio 中針對 ASP.NET Core 的開發時 IIS 支持,其實就是代替IIS Express,可以直接運行IIS測試。經我嘗試,需要填寫主機名字localhost。感興趣的點此嘗試

第二個關鍵點:象aspx文件那樣直接訪問CSHTML文件,一定要注意:aspx文件的目錄只需要在網站右鍵“添加虛擬目錄”就可以運行,但是CSHTML文件,是應用程序,必須右鍵“添加應用程序”才可以運行,否則你會得到如下的錯誤,而且全網都找不到答案!

“/”應用程序中的服務器錯誤。

無法提供此類型的頁。

說明: 由於已明確禁止所請求的頁類型,無法對該類型的頁提供服務。擴展名“.cshtml”可能不正確。   請檢查以下的 URL 並確保其拼寫正確。

 本來很簡單的事情,aspx文件就像asp文件、php文件那樣是通過自帶插件解釋執行的,而CSHTML文件是程序,可以編譯執行的,它的目錄下面自帶了一個bin目錄,里面存放了必不可少的幾個dll文件,還有一個web.config配置文件,我也是事后才明白的。

你需要做的是直接將存放有CSHTML文件的目錄添加為新網站(默認有應用程序池),如果已經添加為虛擬目錄的(虛擬目錄無法使用應用程序池),可以右鍵轉換為應用程序,圖標會明顯變化。

這時候CSHTML文件就可以正常訪問了。

測試文件,點我下載

為什么說是血淚路呢,前幾天研究了一個通宵都沒有結果,實在搞不懂IIS和IIS Express之間到底差了啥,以為問題出在applicationhost.config文件上,結果不是。今天打開了一個以前的Razor pages應用程序,突然發現原來Razor pages項目發布后的dll程序集文件就是個擺設(只包含程序集清單信息的空文件,大小只有大約4k),完全可以刪除,只保留cshtml文件就可以訪問頁面,就象經典asp和aspx一樣。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM