- - PR -
ASP.NET2.0でのコードベースの記述について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-02-04 19:59
お世話になります。
お伺いしたいことは、 「ASP.NET2.0において、Web.configにコードベースの記述をした場合 正常に動作するのか。また記述方法はVB.NETと異なるのか」です。 参照元の記事、参照元が参照している記事をもとに web.configにコードベースの記述をしたのですが、 インスタンス生成時にDLLが見つからないとのエラーメッセージが 表示されます。 binフォルダにDLLが存在すれば正常に動作することは確認済みです。 結局ASP.NET2.0でのコードベースの記述はできないのでしょうか? ご存知の方が見えたらご返答をお願いいたします。 | ||||
|
投稿日時: 2009-02-04 20:02
> binフォルダにDLLが存在すれば正常に動作することは確認済みです。
ASP.NETではdllはbinフォルダに存在していることが前提条件となります。 あとはGACに登録してサーバ内全体で共有できるようにするか、かな。 binフォルダに置いたのでいけないのはなぜでしょう? | ||||
|
投稿日時: 2009-02-04 20:23
どっとねっとふぁん様 返答ありがとうございます。
binにおいてはいけないわけではないのですが、 最近VB6.0プログラマからASP.NETプログラマになったばかりでして、 いろいろ試してみている中でコードベースという記事を見つけ、 それがASP.NET2.0でもできるのかと思ったしだいです。 >ASP.NETではdllはbinフォルダに存在していることが前提条件となります。 浅学で申し訳ないのですが、この内容が詳しく説明されている文献を ご存知でしたら、教えていただけると幸いです。 | ||||
|
投稿日時: 2009-02-08 12:52
お世話になります。
とりあえず現在自分で調査してみたことのまとめなのですが、 MSDNに以下の記述があったので引用します。
これをもとにASP.NETでのDLLの配置をまとめてみると、 GACへの配置:多くのアプリケーションで共有する場合に有効。 →今回はひとつのアプリケーションでのみ使用するため、必要性なし。 binへの配置:DLLのロードに失敗するとアプリケーションが起動しない。 →バージョンの違うDLLを配置することはないため、とりあえず問題なし。 CodeBaseの指定:「サブディレクトリの中であっても構いません。」と引用の中に 記述されているためできるのであろうが、Windowsアプリケーションとは記述が違う? 結局ASP.NET2.0では<codebase>要素でのDLL配置はできないのでしょうか? 再度の質問になってしまいますが、ご存知の方見えたら回答お願いいたします。 | ||||
|
投稿日時: 2009-02-09 10:27
コードベースの説明は次のようになってますか。。。
> その場所はアプリケーション ディレクトリの直下であっても、サブディレクトリの中であっても構いません。 アプリケーションディレクトリのサブディレクトリ内、ということになると、ASP.NETの場合、実行時のアプリケーションディレクトリは元のアプリケーションを置いた場所とは異なるはずです。 ASP.NETは実行時にはコンパイルしたdllが別の場所に作成されて実行されているはずで、このため、実行している間でもソースに触ったりすることができます。 まぁ、ソースを修正して保存した時点で再度コンパイルが動くはずですが。 ASP.NETでは、このアプリケーションディレクトリというのが実行時のdllのある場所とかになっているかもしれません。 そのためにうまく動かないのかもしれませんね。 ちょっと想像だけで書いているので、本当にそのせいかわかりませんが。 | ||||
|
投稿日時: 2009-02-10 18:01
codebase指定をしてシングルページなアセンブリを思いっきり外に出してみましたが、正常に動作しました。
ASP.NETの実行ユーザーのアクセス権がcodebaseの指定先に無いだけだったりしませんか? IIS5ならユーザーASP.NET。 IIS6ならデフォルトはNETWORK SERVICEです。 アセンブリロードについて http://msdn.microsoft.com/ja-jp/library/15hyw9x3(VS.80).aspx ちなみにアプリケーションベースのディレクトリやら何やらは AppDomain.CurrentDomain.SetupInformation で見れます。 IISに配置した場合、実際の実行場所はAppDomain.CurrentDomain.SetupInformation.ShadowCopyDirectoriesですが ApplicationBaseは配置した場所と変わってないようです。 [ メッセージ編集済み 編集者: ugaya 編集日時 2009-02-12 11:47 ] | ||||
|
投稿日時: 2009-02-10 18:55
ああ、アクセス権限でしたか。
やっぱ動かしもせずに勘で話をするのはいけませんねm(_ _)m | ||||
|
投稿日時: 2009-02-10 20:35
どっとねっとふぁん様
ugaya様 貴重な情報ありがとうございます。 そうかアクセス権か!! ちなみに今回リリース予定のアプリのフォルダ構成は以下の通りで、 アプリケーションフォルダ binフォルダ アセンブリ.dll その他構成ファイル Excelテンプレートフォルダ テンプレート.xls (DLLフォルダ)←ここの構成が??? もろもろ.aspx Web.config 同じように配置したEXCELテンプレートファイルには 問題なくアクセスできてたんで、 その辺何も気にしてませんでした。。。 テンプレートの使用とDLLのロードとでは、何か違うのか??? すいません、今これを家で見ててテストできる環境がないため、 返答は木曜日以降になります。 折角有益な情報をいただいたのに、ごめんなさい。 |