ASP.NET MVC5 總結(jié)

時(shí)隔多年,又把ASP.NET MVC撿起來(lái)。以前用的MVC3,現(xiàn)在都到MVC5了,以前的東西有點(diǎn)跟不上了。趕緊把遇到的坑都記下來(lái),也算是邊開發(fā),邊總結(jié)。

1. IIS 7.5的部署

在win7或server 2008上部署MVC5項(xiàng)目需要安裝.NET Framework 4.5.1,否則會(huì)在<compilation><httpRuntime>節(jié)點(diǎn)處報(bào)錯(cuò),稱targetFramework不匹配。

2. SQLite及Entity Framework 6配置

要使用VS的ADO.NET數(shù)據(jù)實(shí)體向?qū)В枰惭bSQLite for Visual Studio。下載時(shí)注意選擇匹配的VS版本。在MVC項(xiàng)目中,用NuGet添加Entity Framework(版本選6.20或6.0)和System.Data.SQLite(SQLite在NuGet上只維護(hù)了一個(gè)最新版,本文選擇1.0.106)。

3. 修改 web.config 文件

雖然通過(guò)NuGet安裝SQLite可以自動(dòng)添加引用并修改web.config,但自動(dòng)修改的配置文件有誤,需要修改entityFramework節(jié)點(diǎn)下的providers,正確的配置如下:

<providers>
    <provider invariantName="System.Data.SQLite" 
        type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
    <provider invariantName="System.Data.SQLite.EF6" 
        type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>

<providers>的前一個(gè)兄弟節(jié)點(diǎn)<defaultConnectionFactory>,如不使用VS自帶的SQL Server Local DB也可去掉該默認(rèn)數(shù)據(jù)庫(kù)連接工廠類。

4. BundleConfig 的配置

BundleConfig中定義了css和js的虛擬路徑,在最終生成的HTML中對(duì)資源的引用也是該虛擬路徑。但如果在css中有對(duì)圖片或字體的引用,且使用了相對(duì)路徑如background-image: url(../img/test.jpg),多數(shù)情況下,都會(huì)找不到這個(gè)test.jpg。這是因?yàn)閏ss中外聯(lián)的圖片、字體等文件并不存在于我們指定的虛擬路徑下,而虛擬路徑下又只有css和js文件。這就導(dǎo)致了圖片和字體的丟失。解決辦法有三:

  • 對(duì)有外聯(lián)其他資源的css文件,單獨(dú)配置一個(gè)bundle,指定虛擬路徑時(shí)讓其與實(shí)際物理路徑相同。
  • 將有外聯(lián)其他資源的css文件進(jìn)行修改,把../img/test.jpg這樣的相對(duì)路徑都改為/Content/img/test.jpg這樣的絕對(duì)路徑。缺點(diǎn)是修改后的css文件與網(wǎng)站目錄高度耦合,換一個(gè)目錄結(jié)構(gòu)就又要修改。
  • 修改Transformer
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容