- PR -

IIS6.0 共通ライブラリの参照について

投稿者投稿内容
sayurin
会議室デビュー日: 2005/04/14
投稿数: 13
投稿日時: 2005-04-14 17:52
初めて投稿します。

WindowsServer2000、IIS5.0、C#.NETで複数のWindowsアプリケーションを開発しています。
・各アプリケーションは共通ライブラリを参照設定しています。
・共通ライブラリは、C#.NETで作りました。
・各アプリケーションはASPからShellで呼び出しています。
・正常に動作しています。

しかし、WindowsServer2003、IIS6.0の環境で実行すると正常に動きません。
共通ライブラリのコンストラクタを呼び出すためのオブジェクトの宣言で処理がとまっていると思います。
プロセスでみるとEXEは動いています。エラーにもならず、ずっと動いています。
このEXEをhttp経由ではなく実行すると正常に動作します。
共通ライブラリ自体を参照する権限がないというわけではないようです。
なぜなら、参照設定をだけをし、コンストラクタを呼び出すためのオブジェクトの宣言をしなければ動きます。
IISの設定でIIS5.0プロセス分離モードでWWWサービスを実行するにチェックをつければもちろん正常に動作しますが、これではIIS6.0を活かしてないですよね?
みなさんは共通ライブラリをどのように使用しているのでしょうか?
アセンブリの登録とかをしないと使用できないものなのでしょうか?
ご教授、よろしくお願いします。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2005-04-14 18:38
sayurinさん、こんばんは。

#回答ではありません。

引用:

みなさんは共通ライブラリをどのように使用しているのでしょうか?


というか、「みなさん」は普通、↓こういう事をしないんじゃないかと思います。
引用:

・各アプリケーションはASPからShellで呼び出しています。


一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2005-04-14 18:44
"共通ライブラリ"リというのはアセンブリということですよね。
exeが別のアセンブリ(dll)を参照しているわけですね?

IIS5で動くというのは良く分かりませんが気になったことを。

>このEXEをhttp経由ではなく実行すると正常に動作します。
>共通ライブラリ自体を参照する権限がないというわけではないようです。
ここが少し分かりづらいんですが、Webのプログラムから起動するのと、普通にUIから実行(exeをダブルクリック?)するのとでは権限が違うんじゃないでしょうか。
何か別の意味合いのことをおっしゃってますか?

>プロセスでみるとEXEは動いています。エラーにもならず、ずっと動いています。
"エラーにもならず"というのはどうして分かりますか?
権限の問題でアセンブリの参照に失敗しているというのが一番ありそうだと思うんですが。

例外が出た場合はexeを終了するようなコードを書いていて、それなのに終了しないということは例外も出ずにきちんと動作しているという判断ですか?
catchをしていなくて、例外を知らせるメッセージボックスが出ないから正しく動いているなどという判断をしているわけではないですよね?
sayurin
会議室デビュー日: 2005/04/14
投稿数: 13
投稿日時: 2005-04-14 19:10
きくちゃんさん、一郎さんご回答ありがとうございます。

呼びだし側はASPなのです。ASP.NETで作ればこうはならなかったと思うのですが・・・。
>きくちゃんさん
質問とは違うことですが、ASPからEXEを呼び出すのに適切な方法は何ですか?

引用:

一郎さんの書き込み (2005-04-14 18:44) より:
"共通ライブラリ"リというのはアセンブリということですよね。
exeが別のアセンブリ(dll)を参照しているわけですね?


そうです。

引用:

IIS5で動くというのは良く分かりませんが気になったことを。

>このEXEをhttp経由ではなく実行すると正常に動作します。
>共通ライブラリ自体を参照する権限がないというわけではないようです。
ここが少し分かりづらいんですが、Webのプログラムから起動するのと、普通にUIから実行(exeをダブルクリック?)するのとでは権限が違うんじゃないでしょうか。
何か別の意味合いのことをおっしゃってますか?


権限はhttp経由だとNetworkServiceで起動します。
exeをダブルクリックするとログインユーザで実行します。これは正常に動作します。

引用:

>プロセスでみるとEXEは動いています。エラーにもならず、ずっと動いています。
"エラーにもならず"というのはどうして分かりますか?
権限の問題でアセンブリの参照に失敗しているというのが一番ありそうだと思うんですが。

例外が出た場合はexeを終了するようなコードを書いていて、それなのに終了しないということは例外も出ずにきちんと動作しているという判断ですか?
catchをしていなくて、例外を知らせるメッセージボックスが出ないから正しく動いているなどという判断をしているわけではないですよね?


やはり、権限の問題ですよね。アプリケーションプールで実行ユーザをAdminの権限のユーザにしても同じことが起こります。
ちなみに、EXEは例外にもなりませんでした。応答がない状態です。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2005-04-14 19:28
引用:

sayurinさんの書き込み (2005-04-14 19:10) より:
ちなみに、EXEは例外にもなりませんでした。応答がない状態です。


ここを知りたいわけですが。
>例外が出た場合はexeを終了するようなコードを書いていて、それなのに終了しないということは例外も出ずにきちんと動作しているという判断ですか?
私はこう書きましたが、そういうことですか。
そうでなければ例外が出ていないということを知る方法はどのようなものでしょうか。
例外が出た場合にログファイルに書き出したりしているわけですか?
それともデバッガでステップ実行して、catch句に飛ばないことを確認しているわけですか?
sayurin
会議室デビュー日: 2005/04/14
投稿数: 13
投稿日時: 2005-04-14 19:32
引用:

ここを知りたいわけですが。
>例外が出た場合はexeを終了するようなコードを書いていて、それなのに終了しないということは例外も出ずにきちんと動作しているという判断ですか?
私はこう書きましたが、そういうことですか。


そうです。

引用:

そうでなければ例外が出ていないということを知る方法はどのようなものでしょうか。
例外が出た場合にログファイルに書き出したりしているわけですか?
それともデバッガでステップ実行して、catch句に飛ばないことを確認しているわけですか?


tryで共通ライブラリのコンストラクタを呼び出すためのオブジェクトの宣言をしています。
catchでログを書いて処理を終了という単純なものを作りましたが、走りっぱなしになります。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2005-04-14 19:34
sayurinさん、こんばんは。

引用:

質問とは違うことですが、ASPからEXEを呼び出すのに適切な方法は何ですか?


いや、「ASPからEXEを呼び出す」という事自体を、あんまりやらないのではないかと。
ASP から呼び出せるように COM DLL 化するとか。
しかし、呼び出される側のEXEは .NET アプリケーションなんですよね? なのにASP…。

あとは、サーバをリモートデバッグできるようにセットアップしてEXEをデバッグビルドすれば…。

一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2005-04-14 19:43
引用:

sayurinさんの書き込み (2005-04-14 19:32) より:
catchでログを書いて処理を終了という単純なものを作りましたが、走りっぱなしになります。



なるほど。
じゃあログを書き出す権限がないというのはどうでしょう。
そのせいでcatch句の中でまた例外が出てしまっているとか。
ログ書き出しをコメントアウトして実行してみてください。

そういえば、IIS5とIIS6ってプログラムの実行権限が違うんですよね。

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