- - PR -
DLL配信
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-09-01 20:21
ヨコヤマダといいます。
よろしくお願いいたします。 「ASP.NETはシャドウコピーを作りそれを使用するため、Webサービスとして公開されているDLLの本体は、いつでも上書き可能だ」ということをASP.NETのHPで読みました。 じゃあ、公開されているDLLが更にローカルで呼び出しているDLLはどうなのでしょう?これも使用中でも上書き可能なのでしょうか? また、上書きして、その効果が現れるのはいつなのでしょうか? (ちなみに私がやってみたところ、いつまでたっても効果は現れませんでした。) 単純にDLLの配信をしたいだけなのです。 ぬしの皆様、jitta様、どうか助けてください… 開発環境 :Win2003、VS.NET2003、IIS6.0 | ||||||||
|
投稿日時: 2004-09-01 22:01
公開されているDLLってどういう意味ですか? ASP.NET上で作成したWebサービスが(内部的に)使用しているDLLと言う意味でいいんですかね? 基本的にbinフォルダは常に変更を監視されているはずですから、更新した瞬間にリスタートがかかると思いますが。 | ||||||||
|
投稿日時: 2004-09-01 22:48
なちゃさん、お返事ありがとうございます!
私が書きました「公開されているDLL」とは、IISのWeb仮想ディレクトリを通じて外から使えるようなメソッドを実装しているDLLのことです。 公開されているDLLが参照しているだけで外からは使っていないようなDLLは「ローカルで呼び出しているDLL」と呼んでいます。 2つとも同じディレクトリに置いて使っています。 ところで、何が「リスタートがかかる」のでしょうか?IISですか? また、そのリスタートがかかる為に必要な設定などありますか? [ メッセージ編集済み 編集者: ヨコヤマダ 編集日時 2004-09-01 22:53 ] | ||||||||
|
投稿日時: 2004-09-01 23:05
公開されているDLLはWebMethodの入っているDLLで、その他内部で利用している独自のライブラリ関連が、ローカルで呼び出しているDLLってことですかね? これらはIISの仮想ディレクトリ直下のbinフォルダに置いているということですよね?
リスタート(厳密にはちょっと違うかも)されるのは、IISではなくてASP.NETの本体といえる部分です。ASP.NETのワーカープロセス内で起動されている、各Webアプリケーション用のアプリケーションドメインと言う事になりますかね。 ※ややこしいですが、基本的にはASP.NET環境が再起動されるという感覚でいいと思います。 リスタートがかかるのはASP.NETにおける基本の動作なので、特にデフォルトから設定などは不要です(設定によっては無効にもできたかもしれませんが)。 binフォルダ内に対して更新をかければ、自動的に再起動されるはずです。 | ||||||||
|
投稿日時: 2004-09-02 06:34
IIS6ということですが、6も、ワーカプロセス全体がリスタートするんでしたっけ?6は全くさわったことないですけど。。。 | ||||||||
|
投稿日時: 2004-09-02 09:38
うーん読み直してみると私の書き方が変ですね。 言いたかったのは、対象Webアプリケーションのアプリケーションドメインがリスタートするって事です。 # 条件によってはいろいろあったんだっけかな?ちょっと思い出せない。 IIS5でもIIS6でも、ワーカープロセス自体が再起動するわけじゃなかったと思いますです(自信なし…)。 | ||||||||
|
投稿日時: 2004-09-02 11:54
なちゃさん、Jittaさんありがとうございます。
はい。その通りです。 実験してみたところ偶然以下のような発見がありました。 ・定数しか用意していない(メソッドが一切ない)「独自ライブラリ」を用意し「公開DLL」からその定数を使用している場合、「独自ライブラリ」の変更が反映されません。 ・Staticのメソッドをひとつ書き込み、そのメソッドを「公開DLL」で使用してみると、「独自ライブラリ」の変更が反映されるようになりました。 どちらも「独自ライブラリ」はnewせずに使用しています。 アプリケーションドメインがリスタートされない条件として、前者のような条件があるということなのでしょうか?? | ||||||||
|
投稿日時: 2004-09-02 12:54
binフォルダ内のアセンブリを更新されれば、アプリケーションドメインがリスタートするはずです。
http://www.atmarkit.co.jp/fdotnet/dotnettips/183aspsesout/aspsesout.html Application_Start, Application_Endでログを残して確認して下さい。 # アプリケーションドメインがリスタートしても、「独自ライブラリ」はキャッシュされて再読み込み されない場合があるのかな?? |