DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ローカルPCで開発したAPを実際のサーバーに移行したらエラー

環境/言語:[使用言語(C#)、.NET Frameworkのバージョン(2.0)]
分類:[ASP.NET]

VisualStudio2005のASP.NET2.0にてWebアプリケーションの構築を行っています。
画面上にデータベースの内容を表示させるアプリケーションです。

ローカルPCにて開発したアプリケーションを実際のサーバーに移行を行い、
実行しましたが、下記エラーが表示されます。


-------------------------------------------------------------------------------------------------------
'/' アプリケーションでサーバー エラーが発生しました。


セキュリティ例外
説明 : このアプリケーションはセキュリティポリシーで許可されていない操作を実行しようとしました。
このアプリケーションで必要なアクセス許可を取得するには、システム管理者に相談するか、
構成ファイルでアプリケーションの信頼レベルを変更してください。

例外の詳細: System.SecurityException:型'System.Data.OleDb.OleDbPermission,System.Data,
Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089'のアクセス許可の要求に失敗しました。

------------------------------------------------------------------------------------------------------


【バージョン等】
・windows2000サーバー(IIS5.0)
・データベースサーバー Microsoft Access2002
・ASP.NET2.0
・.NET Framework 2.0


【環境構築に行った作業】
・サーバーの役割管理にASP.NETの有効化を設定
・仮想ディレクトリの設定
・仮想ディレクトリのアクセス許可の設定(関係者を許可)
・ローカルで開発したプログラムをフォルダごと仮想ディレクトリにコピー


【ディレクトリ構成】
サーバー
 仮想ディレクトリ
  老isualStudio2005 ←このフォルダをローカルからコピーしてきました
   榔rojects
    蝋X.sln
    蝋X (クラスライブラリ フォルダ)
     話in
      蝋X.dll
蝋X.pdb
      蝋X.dll.config
     和pp.config
蝋XBusiness (ビジネスロジックを記述したソースコード)
     魯ataSet関連
   聾ebSites
    蝋XWebApplication
     連pp_Code
     連pp_Data
蝋X.mdb
     錬in
      蝋X.dll
     .aspxファイル
     .aspx.csファイル


デバックして調べてみたところ、
.aspx.csファイルにてXX.XXBusiness.FillByYYY(DataSet)メソッドを呼び出してDataSetのデータを取得する際、
mdbファイルへ接続するときに上記のエラーとなるようなのですが、
仮想ディレクトリにアクセス許可は与えてありますので、
それ以下の下層のディレクトリにもアクセス許可があると思うのです。

ちなみに、XXBusinessで例外をcatchする処理を記述しなければ.aspxファイルの内容(タイトルとかボタンとか)
は画面に表示できます(データベースの内容は表示されませんが・・)。

ローカル上で実行していたときにはデータベースにも接続できてエラーも起こりませんでしたが、
サーバ上にコピーして実行するとうまくいきません。


解決方法がわからず途方にくれております。

アドバイス、解決方法、何でも良いのでご教示ください。
宜しくお願い致します。
■No26055に返信(。NET初心者さんの記事)
> ・データベースサーバー Microsoft Access2002
JET データベースエンジンの特性上、
ASP/ASP.NET で mdb を利用する事は、あまりお奨めできません。


> ローカルPCにて開発したアプリケーションを実際のサーバーに移行を行い、
IIS サーバー上には、*.sln 等を置く必要は無いと思います。
通常は、WebSites の下にある物を配置するだけで OK かと。
(Web アプリが参照する依存ファイル群は、\App_Data や \Bin の下にあるはず)


> 実行しましたが、下記エラーが表示されます。
その Web アプリの実行アカウント(ASPNETアカウントなど)が、
mdb を配置したフォルダに対して、充分なアクセス権を所有しているかどうかを
確認してみてください。("フル コントロール" または "変更" の権限が必要です)

なお、権限の変更後は、(IIS の再起動ではなく)OS の再起動をお奨めします。

以下、参考情報。
http://rararahp.cool.ne.jp/cgi-bin/lng/dotnet/dotnetlng.cgi?print+200306/03060001.txt
http://support.microsoft.com/kb/436540/ja
http://social.technet.microsoft.com/Forums/ja-JP/iis7ja/thread/3c209793-8e37-4762-ade6-d4b5927d1ebf



> 【ディレクトリ構成】
全角スペースと半角スペースの違いにより
階層図が崩れていたため、補正引用しておきます。

> サーバー
>  └仮想ディレクトリ
>   └VisualStudio2005 ←このフォルダをローカルからコピーしてきました
>    ├Projects
>    │├XX.sln
>    │└XX (クラスライブラリ フォルダ)
>    │ ├bin
>    │ │├XX.dll
>    │ │├XX.pdb
>    │ │└XX.dll.config
>    │ ├app.config
>    │ ├XXBusiness (ビジネスロジックを記述したソースコード)
>    │ └DataSet関連
>    └WebSites
>     └XXWebApplication
>      ├App_Code
>      ├App_Data
>      │└XX.mdb
>      ├Bin
>      │└XX.dll
>      ├.aspxファイル
>      └.aspx.csファイル
「書き込みのルールについて」に書かれているように、この掲示板では匿名での投稿は禁止されています。「初心者」というお名前も匿名とみなされます。今後はお名前を変更してご投稿いただけますように、お願いいたします。

書き込みのルールについて
http://dobon.net/vb/bbs/index.html
■No26057に返信(魔界の仮面弁士さんの記事)
> ■No26055に返信(。NET初心者さんの記事)

アドバイスありがとうございます。

>>実行しましたが、下記エラーが表示されます。
> その Web アプリの実行アカウント(ASPNETアカウントなど)が、
> mdb を配置したフォルダに対して、充分なアクセス権を所有しているかどうかを
> 確認してみてください。("フル コントロール" または "変更" の権限が必要です)
>
> なお、権限の変更後は、(IIS の再起動ではなく)OS の再起動をお奨めします。
>

mdb を配置したフォルダのアクセス権はフルコントロール、変更の権限を所有させています。
が、IISの再起動もOSの再起動も諸事情によりできない状態です。。
それが主な原因なのでしょうか?

ちなみにWebConfigでトラストレベルをFullに変更しても同じエラーでした。。
2009/12/18(Fri) 13:01:06 編集(投稿者)

■No26090に返信(dotnetdotnetさんの記事)
> IISの再起動もOSの再起動も諸事情によりできない状態です。。
実のところ、私は ASP.NET の利用経験が無いのですが、
少なくとも ASP において、フォルダ権限の変更後にサービスあるいは OS を
再起動しないと、変更結果が反映されないという状況を何度か経験しています。

> それが主な原因なのでしょうか?
そこまでの事は私には分かりません。
(もしかしたら全然違う理由かも知れませんし)

再起動が必要なのかどうか気になるのであれば、別サーバー(VirtualPC でも可)を
用意して、そこに同様の環境を構築し、その後、再起動することで問題が
解決するかどうかを検証してみては如何でしょう。

DOBON.NET | プログラミング道 | プログラミング掲示板