- - PR -
Access DB 接続エラー
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2002-08-01 17:29
http://www.atmarkit.co.jp/fdotnet/netdict/netdict004/netdict004_04.html
などを参考に VS.NET で Access DB を検索する Web Service を C# で asmxファイルに書いて、コンパイルにまでこぎつけたのですが、ブラウザからアクセスすると以下のエラーが新しいブラウザ画面に現れます。 --------------------------- エラーメッセージ -------------------------System.Data.OleDb.OleDbException: ファイル 'C:\tmp\estimate.mdb' を開くことができませんでした。ほかのユーザーが排他的に開いているか、データを読み取る権限がありません。 ---------------------------------------------------------------------- 他のユーザが開いていることはないので、権限の問題ということになるのでしょうが どこを設定すればよいのか見当がつきません。 状況としては、サービスを公開しているマシンと同じマシンから、同じユーザがブラウザでアクセスしています。 何か設定すべき箇所があるようでしたら、教えてください。 | ||||
|
投稿日時: 2002-08-02 00:17
こんにちはUTTさん。
お役に立つかどうかはわかりませんが、私がASPのプログラムを 作成してローカルでテストしていたとき、同じエラーに直面しました。 OSはWindows2000、データベースを格納していたディレクトリは マイドキュメントでした。 このときは、データの格納していたフォルダーをC:\Tempに変えたところ 正常に動作しました(マイドキュメントのアクセス権を変えたくなかった ので)。 もし、お使いのOSがWindowsNT系のOSならば、プロパティのセキュリティで アクセス権限などを確認して見られてはいかがでしょうか。 はずしていたらすみません。 | ||||
|
投稿日時: 2002-08-02 03:20
どの認証方式を採用しているかによって違ってくると思います。
普通は匿名接続による認証を使っていると思いますが、もしそうだとすると匿名のアカウントに対する.mdbファイルのアクセス権がないため思われます。 特に変更していなければ IUSR_コンピュータ名 ですので、このアカウントを許可するように.mdbファイルのアクセス権を変更すれば解決すると思います。 あと、.mdbファイルの親ディレクトリも同様にアクセス権の設定が必要です。 はずしていたら、すみません。 | ||||
|
投稿日時: 2002-08-02 08:58
ASPとは異なり、ASP.NETの場合、匿名ユーザのアカウントはASPNETという
ユーザになるはずです。 このユーザの権利はだいぶ制限されたもののようですので、特にサーバ上の リソースにアクセスするようなものは気をつける必要があるでしょうね。 | ||||
|
投稿日時: 2002-08-02 11:32
原因の一端がわかりました。親切にアドバイスをくれた方々に悪いので早速お伝えします。
サーバエクスプローラからデザイナに Access のテーブルを Drag&Drop してコードを生成していたのですが、この際、自動生成されるコードのなかに System.Data.OleDB が含まれていないのが悪かったようです。ファイルの先頭に using で System.Data.OleDB を追加したところ出なくなりました。 デフォルトでは System.Data.SqlClient しかコードが自動生成されないようです。 さて、これで解決かと思いきや、そうは甘くありませんでした。 再びブラウザでページ上の WebMethod を選択すると ----------------------------- IE6 の表示 ---------------------------- 「検索中のページには問題があるため表示できません。」 次のことを試してください ・・・ ・・・ ・・・(←あまり効果が期待できなさそうな数々の対処法) HTTP 500 - 内部サーバー エラー Internet Explorer --------------------------------------------------------------------- と返ってきます。 Netscape Communicator ではどうなのかと気まぐれに試してみると ----------------------------- Netscape の表示 ----------------------- オブジェクト参照がオブジェクト インスタンスに設定されていません。 --------------------------------------------------------------------- と返ってきます。 たった1行ですが、IE6 よりは役に立ちそうなメッセージが返ってきました。 とはいえ、Web サービスとして公開したプログラムをデバッグするには、 どうすれば良いのでしょうか? ブラウザからアクセスしても、Consoleアプリ のデバッグのようにはブレークポイントやトレースができないので、問題の 埋もれている箇所を絞り込めません。VS.NET が自動生成するコードと絡むと お手上げです。 デバッグ方法について何かアイディアをください。お願いします。 | ||||
|
投稿日時: 2002-08-02 13:14
ブレークポイントを置いてデバッグ実行 (F5) では? f(^^; http://www.microsoft.com/japan/msdn/vstudio/support/ http://www.microsoft.com/japan/msdn/netframework/support/kbASPNet.asp http://support.microsoft.com/default.aspx?scid=kb;ja;JP316726 > [HOW TO] ASP.NET Web アプリケーションをデバッグする方法 ※ Web サービスの場合は、まず、直接呼び出すテストプログラム (exe) を書いてテストしたほうが早いですよ。 |
1