ASP.NET MVC 實現僞靜態

 

 

 

1  什麼是僞靜態?

如今不少門戶網站或者各大電商平臺的網站的連接最後都是.htm或者.htm結尾,那麼他們的網頁真的是靜態的html嗎?拿京東來講,有無數個頁面都都Html,在商品每時每刻均可能被更新的狀況下,那是否是要有專門的人員來修改html靜態頁面呢,可想而知固然不是,不論是javaweb仍是asp.net的動態頁面絕對不是以.html結尾的。

2 爲何要實現僞靜態?

那麼咱們爲何要注重url的結尾呢,那就是SEO(Search Engine Optimization)--搜索引擎優化,雖然如今主流的搜索引擎都開始支持動態的url,但是咱們的網站爲了排名儘可能靠前,咱們仍是要儘可能符合搜索引擎的規則。

3  MVC如何實現僞靜態?

經過修改配置文件和路由來實現。

在配置文件中找到system.webServer節點下面的modules節點,添加runAllManagedModulesForAllRequests="true",這是讓全部的請求包括靜態頁面和圖片,js等等都進入asp.net的管道。html

而後設置路由配置:java

這樣一來,就能夠經過下面的URL來訪問頁面了,光看地址是靜態網頁的格式,但實際上仍是動態的網頁。web

可是runAllManagedModulesForAllRequests="true"這種方式是很差的。runAllManagedModulesForAllRequests就像 IIS Modules 和請求的一個通道開關,若是這個開關是打開的,那麼訪問此站點的全部請求都會進入 Modules 中進行處理,這其中就包含一些靜態文件的請求,這也是最多見的一種「不必處理」的請求,由於請求進入 Modules,那就要有相應的程序進行處理,這就形成不必的性能開銷,由於靜態文件只是獲取展現,徹底不必進行 Modules 處理,小的站點無所謂,當一些很大 PV 站點也這樣作的時候,就會對 IIS 的 Modules 程序處理形成一些「壓力」windows

用這種方式作僞靜態後,若是有真的靜態頁面,必定不要將靜態頁面放在view文件夾下。不然會去執行controller裏面的action,從而致使沒法找到資源。服務器

 

如今開發完成了,並且跑代碼也沒任何問題。而後看看部署到iis上會怎麼樣。asp.net

將文件發佈好了之後,部署到iis上,這個過程就不說了less

一切弄好了之後,訪問網站,出現:不能在此路徑中使用此配置節   的錯誤。網上找的瞭解決方案:https://www.cnblogs.com/DHclly/p/6136349.html。爲了怕這篇文檔丟失,仍是在這裏記錄一下
ide

HTTP 錯誤 500.19 - Internal Server Error
沒法訪問請求的頁面,由於該頁的相關配置數據無效。
詳細錯誤信息:
模塊     IIS Web Core
通知     BeginRequest
處理程序       還沒有肯定
錯誤代碼       0x80070021
配置錯誤       不能在此路徑中使用此配置節。若是在父級別上鎖定了該節,便會出現    這種狀況。鎖定是默認設置的(overrideModeDefault="Deny"),或者是經過包含 overrideMode="Deny" 或舊有的 allowOverride="false" 的位置標記明確設置的。
配置文件       \xx\web.config

配置源:
66:     <modules runAllManagedModulesForAllRequests="true" />
67:     <handlers>
68:       <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />

解決步驟以下:post

控制面板—>程序—>啓用或關閉windows功—>Internet Infomation Service—>萬維網服務—>應用程序開發功能—>裏面把Asp.Net .選上性能

 

 到此,這個問題解決了。

繼續訪問,又遇到了問題:處理程序「ExtensionlessUrlHandler-Integrated-4.0」在其模塊列表中有一個錯誤模塊「ManagedPipelineHandler」

解決辦法是將配置文件中下面的標出的兩行去掉

 

再次訪問網站http://localhost:8025/home/index.html。遇到錯誤:沒法識別的屬性「targetFramework」。請注意屬性名稱區分大小寫。

「/CRM」應用程序中的服務器錯誤。

配置錯誤 
說明:
在處理向該請求提供服務所需的配置文件時出錯。請檢查下面的特定錯誤詳細信息並適當地修改配置文件。 分析器錯誤消息: 沒法識別的屬性「targetFramework」。請注意屬性名稱區分大小寫。源錯誤: 

行 24:             設置爲 true。
行 25:         -->26:         <compilation debug="true" targetFramework="4.0"/>27:         <!--28:             經過 <authentication> 節能夠配置 ASP.NET 使用的 

源文件: E:\NET\CRM.Web\web.config    行: 26 

網上的解決辦法:https://blog.csdn.net/muchlin/article/details/6800863

解決方法:

修改.NET Framework 版本爲相應版本便可,我之前用的是2.0換成4.0的時候出現這個錯誤。

個人win7系統,

一、打開IIs點擊IIS根節點

二、看右邊的「操做」-》點擊「更改.NET Framework 版本」

三、選擇相應的版本,我這裏應該選擇v4.0.30319,點擊肯定

 

四、點擊IIS的應用程序池

五、在右邊「操做」欄裏選擇「應用程序默認設置...」

 

 六、把「.NET Framework 版本」設置爲v4.0,點擊「肯定」便可。

到此這個問題解決了。

繼續訪問http://localhost:8025/home/index.html

出現404錯誤。解決方案:http://www.360doc.com/content/15/0103/20/5028907_437812977.shtml#!/xh

 

 解決辦法:

 

 

 

 

 好了,如今能夠正常訪問:http://localhost:8025/home/index.html了

相關文章
相關標籤/搜索