- PR -

特定の環境で特定のコマンドボタンが動作しない

投稿者投稿内容
Undo_sam
常連さん
会議室デビュー日: 2003/03/11
投稿数: 20
投稿日時: 2004-10-28 22:31
Undoと申します。

ASP.NET上でWebアプリケーションを構築し運用しておりましたところ、以下のエラーが
発生するようになり、自分なりに調べたのですが原因がわかりませんでした。

【症状】

特定の環境においてのみ、特定のコマンドボタンのクリックイベントが発生しない(ように見える)

【試したことと気づいたこと】
1.プログラムのバグを疑い、調べました。
 →たしかにコマンドボタンの名前が違ってましたので、修正しました。
  何度か修正したので、何度目かで間違えてしまったのだと思います。

 →症状改善せず(なぜ!?)

2.コマンドボタン自体が壊れたかもしれないと思い、そのコマンドボタンを削除し
 まったく同じ名前のコマンドボタンを新規に置いて、ソースをそのままコピーしました。

 →症状改善せず

3.イベントビューアを見たところ、
 警告 イベントID:101
 次のエラーのため、サーバーはディレクトリ 'C:\InetPub\shain' に仮想ルート ''
を追加できませんでした: アクセスが拒否されました。 このデータはエラーコードです。

 というエラーがありました。このイベントIDの意味は

 「特定の仮想ディレクトリへのパスが無効であることを示すイベント エラー」

 ということでしたので、現在のサイトを停止し、同じディレクトリを参照するように
 新規にWebサイトを構築しました。

 →症状改善せず

4.管理ツール→インターネットサービスマネージャから、参照先のフォルダやファイルを
 見ると、"kanri"という名前のフォルダだけ、エラーで赤いアイコンになっていました。
 これは、「3」を行った後はエラーにはなっていませんでした。

5.環境が悪いのかと思いましたが、開発環境では問題なく動作します。

6.他のコマンドボタンは動作する。特定のコマンドボタンだけ動作しない。

【環境】
開発環境
 WindowsXP SP1+IIS5.1(でしたっけ) + VisualC#.NET 2003

本番環境
 Windows2000Server SP4+IIS5.0

識者の皆様、どうかよろしくお願い致します。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-10-29 09:58
引用:

Undoさんの書き込み (2004-10-28 22:31) より:
2.コマンドボタン自体が壊れたかもしれないと思い、そのコマンドボタンを削除し
 まったく同じ名前のコマンドボタンを新規に置いて、ソースをそのままコピーしました。



「ソースをそのままコピー」しない場合はどうなります?
つまり、同じ名前のコマンドボタンを新規に置いただけの場合は。

それが動いているようなら、ソースを一部分ずつコピーしてどの部分までコピーしたらクリックイベントが発生しなくなるのか調べてみてはいかがでしょうか。
Undo_sam
常連さん
会議室デビュー日: 2003/03/11
投稿数: 20
投稿日時: 2004-10-29 11:33
>一郎 様

レスありがとうございます。

早速やってみます。

Undo_sam
常連さん
会議室デビュー日: 2003/03/11
投稿数: 20
投稿日時: 2004-10-29 12:15
>一郎 様

>「ソースをそのままコピー」しない場合はどうなります?

コマンドボタン内のソース部分を全てコメントにして再度
Windows2000Serverに配置しました。

「3.イベントビューアを見たところ、警告 イベントID:101 」

の警告が発生してしまいました。

つまりソースコード上のバグではないということでしょうか。

もちろん開発環境では何も起こりませんでした。

動作しないコマンドボタンをクリックすると、必ず
警告 イベントID:101
の警告がイベントビューアに載るので、これが解決への糸口になりそうです。

もう少し調べてみます。

Undo_sam
常連さん
会議室デビュー日: 2003/03/11
投稿数: 20
投稿日時: 2004-10-29 18:20
>警告 イベントID:101

これ関連から調査しても、有効な解決策を見つけることができませんでした。

そこで新規にWindows2000Serverをセットアップし、問題のWebアプリケーションを
配置したところ、全く問題なく正常でした。

つまり、現在運用中のWindows2000Server固有の問題であるということが判明いたしました。

このサーバは他のサービスも動作しており再セットアップは不可能なので、
Webアプリ専用のサーバを新規に構築し、そこに移行することにします。

一郎 様、お忙しいところレスありがとうございました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-10-29 21:17
 よぉわからんなぁ。

 開発環境で動いていて、まったく同じものを本番環境へ持っていくと、特定のボタンだけ、期待する動作をしない

ということですか?そうすると、「ソースコードをコピー」というのは、開発環境で行っているんですよね?で、やっぱり開発環境では動いて、本番環境では動かない、ということですよね?だったら、「ソースコードのコピー」は、動かないことと関係ないですよね?
 ところが、『→たしかにコマンドボタンの名前が違ってましたので、修正しました。』とありますが、これって、本当にそうなら、開発環境でも動かないはずですよね?

 次のことをまとめてください。
・開発環境と本番環境の、環境の違い(VS.NETがインストールしてあるとか)
・開発環境から本番環境への、サイトのコピーの仕方
・開発環境と本番環境の、IIS環境の違い(ディレクトリ構成や、実ファイルのアクセス権限など)

_________________
Undo_sam
常連さん
会議室デビュー日: 2003/03/11
投稿数: 20
投稿日時: 2004-10-30 12:24
Jitta様

レスありがとうございます。

>開発環境で動いていて、まったく同じものを本番環境へ持っていくと、特定のボタン
>だけ、期待する動作をしない
>ということですか?

はい、正におっしゃるとおりです。
特定のボタンというのは、そのサイトに入るための個人認証(認証処理は独自実装)
する"ログイン"ボタンです。
その他のボタン、たとえばXMLDOMで検索する機能を持たせたボタンは正常に動作します。

>「ソースコードをコピー」というのは、開発環境で行っているんですよね?

はい、そのとおりです。
もちろん配置する直前はReleaseでビルドもしてます。

>で、やっぱり開発環境では動いて、本番環境では動かない、ということですよね?

はい、なぜかそうなのです。

>だったら、「ソースコードのコピー」は、動かないことと関係ないですよね?

残念ながらそうなります。

>ところが、『→たしかにコマンドボタンの名前が違ってましたので、修正しました。』
>とありますが、これって、本当にそうなら、開発環境でも動かないはずですよね?

はい。いつ潜り込んだバグなのかまでは特定できませんでしたが、この時点では開発環境
でも動作しませんでした。
だから私もこのバグを修正すれば正常に動作するものだと思い込んでおりました。

コマンドボタンの名前が違う程度ならすぐ直せるので直しました。
開発環境で全ての機能が動作することを確認して、本番環境に配置しました。
動きませんでした。なぜ・・・・・(絶句

今年の2月から9月に問題を確認するまでは正常に運用できていただけに、
ソースよりむしろ環境の問題かなとは薄々感じました。
そこで、まっさらな(新規にWindows2000Serverをインストールした)環境に載せて確認
したところ正常に動作したので、『本番環境で何か発生しているのだろう』という所
までは突き止めました。

>開発環境と本番環境の、環境の違い(VS.NETがインストールしてあるとか)

●開発環境(日常業務+今のプロジェクトでも使用するためいろいろ入っています)
 WindowsXP SP1,IIS5.1,VisualC#.NET 2003,.NET Framework1.1 SP1,Visio 2003,
 Microsoft Office2002,InternetExplorer6.0 SP1,MySQL4.0など

 2004年10月29日現在の重要な更新(WinXP SP2を除く)は全て入ってます。

●本番環境
 Windows2000Server SP4,IIS5.0,.NET Framework1.1 SP1,InternetExplorer6.0 SP1
 WarFTPD(フリーのFTPサーバ),外向けDNS,
 ActivePerl5.?(バージョンは出社しないとわかりません)
 (つまり外向けDNSサーバとWebサーバを兼ねてます)

 2004年10月29日現在の重要な更新は全て入ってます。

>開発環境から本番環境への、サイトのコピーの仕方

恥ずかしながら、いまだによくわからないので、開発環境でReleaseでビルドしたら
プロジェクトで作成されたフォルダの中のファイル全てをエクスプローラでコピー
しているだけです。

>開発環境と本番環境の、IIS環境の違い(ディレクトリ構成や、実ファイルのアクセス権限など)

開発環境はIIS5.1、本番環境はIIS5.0です。
ディレクトリ構成は、上記のようなサイトのコピーをしているので、全く同じ構成に
なるはずです。

実ファイルのアクセス権は、開発・本番環境ともに、ドキュメントルートディレクトリ
において、ASPNET,IUSR_xxxxというアカウントにデフォルトで割り当てられた権限が
あります。
それ以下のディレクトリは基本的に「親からの継承可能なアクセス許可を・・・」を
有効にしています。また、必要に応じて書き込み権を与えています。

ただし本番環境はさらに、

1.メンテナンスを行う人のために、DomainUsersグループの数人に「変更」までの権限
2.DomainAdminsグループに「フルコントロール」の権限

を設定しています。

アクセス権限はかなりいい加減と言わざるをえません。
これで何かわかりますでしょうか・・・。


[ メッセージ編集済み 編集者: Undo 編集日時 2004-10-30 12:28 ]
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-10-30 13:17
Undoさん、こんにちは。

引用:

恥ずかしながら、いまだによくわからないので、開発環境でReleaseでビルドしたら
プロジェクトで作成されたフォルダの中のファイル全てをエクスプローラでコピー
しているだけです。


#「いまだによくわからない」ままで本番環境がどーしたこーしたやっていることの是非はこの際、置いときます。

フルコピーしているなら、VS.NETのメニューから[ファイル(F)]-[開く(O)]-[Webのプロジェクト(W)]を実行して、本番環境でデバッグしてみては如何でしょう? サーバがDMZにあるとかいうなら、一時的に開発マシンをそちらに接続させてもらって…。

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