2017-04-23 20 views
0

SQLite DBを使用して別のデータベース(MS SQL)に接続するだけでなく、一部のデータを読み取るWCFサービスをデプロイしようとしています。サービス自体は、同じサーバー上で実行されているASP Webサイトによって消費されます。IISでホストされているWCFサービスからSQLite DBにアクセスする方法は?

問題は、自分のユーザーだけがウェブサイトとサービスを十分に利用できることです。他のすべてのユーザーは、sqliteデータベースファイルを開くように見えません。

IISからsqliteデータベースにアクセスするためには、どのような権限や特別なアクセスが必要ですか?

アプリケーションプールは、MS SQLデータベースへのアクセスを許可できるようにドメインアカウントで設定されています(統合セキュリティ)。

データベースが格納されているフォルダには、アカウントからアクセスできます。そして、私は誰もが運を持たないすべてのユーザーにアクセスできるようにしようとしました。

私は何かを明らかに欠けている感じが、私は何を把握することはできません...

更新:次のようにエラーがある:

System.Data.Entity.Core.EntityException

型「System.Data.Entity.Core.EntityException」の例外がEntityFramework.dllで発生したが、ユーザーコード

追加情報で処理されませんでした:基になるプロバイダーは、OPEに失敗しました。 n。

内部例外:

System.Data.SQLite.SQLiteException

データベースファイルを開くことができません。

+0

取得しているエラーメッセージは何ですか? – samithagun

+0

エラーがプロバイダを開くことができませんでした。 – Kross

答えて

0

私は問題を解決できました。私は後世のためにここでそれを文書化します。私はこれを行うためにいくつかのステップを踏んでいましたが、現時点で問題を一貫して迅速に再現できるように環境を設定していないため、実際の解決策がどれか分かりません。

免責事項はさておき、ここで私の変更です:

  1. は私がいない ":\のinetpub \ wwwrootのC" に、全く別のディレクトリに、IIS上で新しいアプリケーションプールとWebサイトを作成しました。私は "C:\ Sites \ MySite"を使用して、WCFサービスとそれを使用したWebサイトの両方を展開しました。

  2. アプリケーションプールIDアカウントを新しいADサービスアカウントに変更しました。

  3. データベースをService Web Appディレクトリ内のdataというディレクトリ内に配置しました。ディレクトリとデータベースファイルからすべての継承されたアクセス許可を削除し、ディレクトリとデータベースファイルのサービスアカウントとEveryoneフルコントロールの両方を与えました。

  4. sqliteの接続文字列を "Journal Mode = Off;"に編集しました。

  5. IIS上でアプリケーションプールとWebSiteの両方を停止して開始しました。

この後、サービスは正常に動作し、データベースファイルとSQL Serverへの接続の両方にアクセスできました。機会があれば、私はこれを複製し、最初にエラーの原因を突き止めることができるかどうかを確認するために、何らかの仮想ネットワークを設定します。

関連する問題