2017-04-23 203 views
0

我想部署一個WCF服務,它使用SQLite DB來讀取一些數據以及連接到另一個數據庫(MS SQL)。該服務本身由運行在同一服務器上的ASP網站使用。如何從IIS託管的WCF服務訪問SQLite數據庫?

問題是隻有我的用戶能夠充分使用網站和服務。其他用戶似乎無法打開sqlite數據庫文件。

你需要從IIS訪問sqlite數據庫需要什麼類型的權限或特殊訪問?

應用程序池使用域帳戶進行設置,以便可以授予對MS SQL數據庫的訪問權限(集成安全性)。

存儲數據庫的文件夾可由該帳戶訪問。而且我甚至試圖讓所有人和所有沒有運氣的用戶都可以訪問它。

我覺得我失去了一些東西很明顯,但我想不出什麼...

更新:錯誤如下:

System.Data.Entity.Core.EntityException

型「System.Data.Entity.Core.EntityException」的異常出現在EntityFramework.dll但在用戶代碼

其他信息沒有處理:在底層提供對Ope宇宙失敗ñ。

內部異常:

System.Data.SQLite.SQLiteException

無法打開數據庫文件。

+0

你得到的錯誤信息是什麼? – samithagun

+0

錯誤是無法打開提供商。 – Kross

回答

0

我能解決這個問題,我要在這裏爲後人記錄它。我採取了幾個步驟來做到這一點,而且我目前沒有能夠始終如一地快速重現問題的環境,所以我不能完全確定哪個是實際的解決方案。

免責聲明不談,這裏有我的變化:

  1. 我創建了一個新的應用程序池和網站上的IIS,在另一個目錄完全,而不是在 「C:\的Inetpub \ wwwroot文件」。我使用「C:\ Sites \ MySite」來部署我的WCF服務和使用它的網站。

  2. 我將應用程序池標識帳戶更改爲新的AD服務帳戶。

  3. 我將數據庫置於Service Web App目錄的內部,名爲data的目錄中。我從目錄和數據庫文件中刪除了所有繼承的權限,並給出了目錄和數據庫文件的服務帳戶和Everyone完全控制權。

  4. 我編輯了sqlite連接字符串以設置「Journal Mode = Off;」。

  5. 我停止並在IIS上啓動了應用程序池和網站。

之後服務正常工作,我能夠訪問數據庫文件和連接到SQL Server。如果我有機會,我會建立一種虛擬網絡來複制這個,看看我能否確切地找出造成這個錯誤的原因。