@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

Access DB 接続エラー

1
投稿者投稿内容
UTT
会議室デビュー日: 2002/08/01
投稿数: 10
投稿日時: 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/07/21
投稿数: 121
投稿日時: 2002-08-02 00:17
こんにちはUTTさん。

お役に立つかどうかはわかりませんが、私がASPのプログラムを
作成してローカルでテストしていたとき、同じエラーに直面しました。

OSはWindows2000、データベースを格納していたディレクトリは
マイドキュメントでした。
このときは、データの格納していたフォルダーをC:\Tempに変えたところ
正常に動作しました(マイドキュメントのアクセス権を変えたくなかった
ので)。
もし、お使いのOSがWindowsNT系のOSならば、プロパティのセキュリティで
アクセス権限などを確認して見られてはいかがでしょうか。

はずしていたらすみません。
WEIWEI
常連さん
会議室デビュー日: 2002/07/16
投稿数: 26
投稿日時: 2002-08-02 03:20
どの認証方式を採用しているかによって違ってくると思います。
普通は匿名接続による認証を使っていると思いますが、もしそうだとすると匿名のアカウントに対する.mdbファイルのアクセス権がないため思われます。
特に変更していなければ IUSR_コンピュータ名 ですので、このアカウントを許可するように.mdbファイルのアクセス権を変更すれば解決すると思います。
あと、.mdbファイルの親ディレクトリも同様にアクセス権の設定が必要です。
はずしていたら、すみません。
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2002-08-02 08:58
ASPとは異なり、ASP.NETの場合、匿名ユーザのアカウントはASPNETという
ユーザになるはずです。
このユーザの権利はだいぶ制限されたもののようですので、特にサーバ上の
リソースにアクセスするようなものは気をつける必要があるでしょうね。
UTT
会議室デビュー日: 2002/08/01
投稿数: 10
投稿日時: 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 が自動生成するコードと絡むと
お手上げです。

デバッグ方法について何かアイディアをください。お願いします。
biac
大ベテラン
会議室デビュー日: 2001/10/22
投稿数: 106
投稿日時: 2002-08-02 13:14
引用:

とはいえ、Web サービスとして公開したプログラムをデバッグするには、
どうすれば良いのでしょうか?


ブレークポイントを置いてデバッグ実行 (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

スキルアップ/キャリアアップ(JOB@IT)