引言
最近幫別人做了一個小網站,在本機部署測試的時候,竟然瀏覽不了aspx后綴的頁面,但可以瀏覽html頁面,由此想到了IIS對靜態頁和動態頁不同的處理方式。
http請求到達服務器
當服務器接收到一個http請求時,IIS需要決定如何去處理這個請求,根據文件的后綴名來判別如何處理該請求,獲得后綴名之后,會在服務端尋找可以處理這類后綴名的應用程序,如果IIS找不到可以處理此類文件的應用程序,並且這個文件並不受服務器端的保護,那么IIS將直接把這個文件返回給客戶端。(如:*.html,*.htm,js,*.jpg,*.png等)
能夠處理各種后綴名的應用程序,通常成為ISAPI應用程序(Internet Server Applicatin Pogram Interface,互聯網服務器應用程序編程接口)。雖然是應用程序,但實際上是一個接口,起到一個代理作用,它的主要工作是映射所請求的頁面與此后綴名相對應的實際的處理程序。
通過以上內容,以及實際部署中遇到的問題,可以猜想到是擴展程序的問題,擴展程序找不到對應的處理程序。
原因
為何會造成此問題?
最近剛重裝過系統,系統裝好后,先安裝的vs2013后安裝的IIS導致的,如果先安裝IIS再安裝vs,系統會自動配置IIS,無需手動配置。
解決方案
MSDN:http://msdn.microsoft.com/zh-cn/library/k6h9cz8h.aspx
可參考MSDN上的說法,重新注冊.netframework。
打開cmd
找到framework的路徑,我的vs默認安裝在c盤,路徑為:C:\Windows\Microsoft.NET\Framework\v4.0.30319
輸入cd 進入該目錄,輸入命令aspnet_regiis.exe -i


重新瀏覽,問題解決。
總結
這是在實際操作中出現的問題,這個問題還真不是一般人能遇到的,大家估計都是正常順序安裝的,很少能遇到,記錄一下,這里希望能幫到遇到跟我一樣問題的朋友。
