IIS64位相容32位Sqlite設定方法

來源:互聯網
上載者:User

標籤:

今天花了一天的時間研究了一下SQLite,以取代一些輕量級項目中使用的Access資料庫。原因一方面是想嘗試一下這個收到追捧的輕量級檔案資料庫,另一方面是想使用對象關係映射(ORM),SQLite的支援比Access更好一些。

先做了Demo,做了簡單的select操作,不過根據經驗,.Net應用程式在部署時總會遇到這個那個的問題,果然部署到伺服器上時,出現了一系列的問題。至於SQLite如何使用,不在本文的討論範圍內。

我們本次討論的是在本機開發和調試全部完成後,部署到伺服器上(Windows Server 2008 R2)時的時候出現的問題。

SQLite應用的部署步驟和普通應用是一樣的(本應該是如此,否則如何輕便呢?),但可能會遇到一系列的問題,以下問題都是我在部署時親身經曆的問題,測試用伺服器是一台全新部署的Windows Server 2008 R2。

 

1、命名空間“System.Data”中不存在類型或命名空間名稱“SQLite”(是否缺少程式集引用?)

請檢查是否把System.Data.SQLite.dll放到了bin目錄下。本機因為添加了SQLite安裝目錄下的dll引用因此可以正常調試。> SQLite.NET下載頁面

2、未能負載檔案或程式集“System.Data.SQLite.Linq”或它的某一個依賴項。產生此程式集的運行時比當前載入的運行時新,無法載入此程式集。

以上問題是由於伺服器未安裝.Net Framework 4.0(或許應用程式集區選擇了低版本也會出現,未經測試) ,而.Net Framework版本也是比較重要的細節,可以發現在下載SQLite.NET時候,分的比較嚴格,for .Net Framework 3.5SP1和4.0是分開的,因此必須選用和目標框架版本一致的版本。安裝完.Net 4.0後,記得切換IIS中應用程式集區的版本。

3、未能負載檔案或程式集“System.Data.SQLite.dll”或它的某一個依賴項。找不到指定的模組。

該問題出現的原因是沒有安裝Microsoft Visual C++ 2010 SP1 Redistributable Package (x64)(當然如果你不是64位系統請安裝for x86)。

4、Attempt to write a read-only database

請檢查資料庫所在目錄的許可權,加入IIS_IUSRS組的完全控制許可權(理論上寫入即可)。網上查到說添加Users組,事實上正確的做法是添加IIS_IUSRS組,這個才是IIS背景工作處理序所使用的組,應該與Users是子集的關係,所以使用IIS_IUSRS肯定會更安全一些。

5、未能負載檔案或程式集“System.Data.SQLite”或它的某一個依賴項。試圖載入格式不正確的程式。

這個問題長的和第3個問題很像,只是離勝利更進一步了。產生這個問題的原因是使用了錯誤版本的System.Data.SQLite.dll,即在x64的伺服器上使用了x86的dll(反之亦然),這個問題倒是有2個解決方案。第一個也是我所推薦的,使用正確版本的dll;第二個方法是在IIS應用程式集區的進階設定中,“啟用32位應用程式”一項設定為True。可能你再這麼做之後,又回到了第三個問題,別擔心,x86 Visual C++ Runtime裝上了就好了。

注意:如果選擇了啟用32位應用程式,那麼就只能使用32位的dll,一個應用程式集區中是不能32位和64位混用的。

6、沒有報任何錯,但是訪問SQLite的速度很慢,哪怕是簡單的Select操作。

測試資料是只有2個欄位,10條資料的SQLite3資料庫。很明顯這不是應有的表現,經過一系列的測試和排查,發現該問題是由於目錄許可權造成的。當你只進行查詢之類的唯讀操作時,是不會報錯的。解決方案參照以上第4條即可。
至於產生的原因,看到網上說SQLite在操作時是需要建立臨時檔案的,可能是許可權受限後出現了些許問題了吧。

 

以上6個問題是我部署時遇到的問題,一步步循序漸進,最終贏得了勝利。更加深入的問題後續遇到了繼續補充吧。相信很多人都會遇到相同的問題,也相信這篇文章能夠解決大部分人的問題。

我也是新人,我的職業也不是程式員,如有不足指出,希望高人指教,謝謝。

IIS64位相容32位Sqlite設定方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.