トップ回答者
開発サーバで動作するが、IISで動作しない

質問
-
こんにちは
現在、Visual Studio 2008 で ASP.NET にて、
企業内のイントラネットサイトの作成を行っております。
用途としては特定のファイルを本部のサーバーへアップロードするものです。
そのファイルを開発サーバでテストすると動作するのですが、IISでは動作しなくて困っています。
アップロードには
開発/ASP.NET/備忘録/【外部】FlashUploadによる複数ファイルアップロードで紹介されていた
Multiple File Upload With Progress Bar Using Flash and ASP.NET
すべてそのままではないのですが、自分が作成しているASPXファイルに追加するような形で作成していて
flash自体に変更を加えていません。
開発サーバーでは問題なくファイルをアップロードできるのですがIIS環境だとFlashの表示、ファイルの参照までは
うまくいくのですがアップロードを行おうとするとエラーがでてしまいます。
(このflashファイル特有のエラー画面なので参考にならないと思うのですが
There has been an I/O Error: Error #2038
There has been an HTTP Error: status code 404
と表示されます)
開発サーバーとIISでの違いをいろいろ探ろうとしているのですが、
inetmgr(IISマネージャー)をいじっても解決にはいたらず、参っています。
Multiple File Upload With Progress Bar Using Flash and ASP.NETに設置されている掲示板でも
同様な症状はみられませんでした。
(ファイル容量制限を越えたパターンでも表示されるようなんですが私の場合は1KBのファイルでもエラーがでます。)
この点をチェックすればいいよというヒントがあれば是非教えていただきたいです。
よろしくお願いいたします。
追記
さらに疑問点は組み込んだ状態では上記のような状態なのですが、ダウンロードしてきたまっさらな
ファイルをそのまま使用しようとすると以下の状態になります
開発サーバー flash表示 OK アップロード OK
IIS 真っ白画面 flashはもとよりログイン画面(フォーム認証が最初にあります)も表示されない
おそらくIISの設定の方法が悪いと思うのですが。
よろしくお願いいたします。
回答
-
環境(OS, IIS, .NET, VS のバージョンなど)ぐらいは書いておきましょう。
紹介されているページをざっと見ただけで、深く調べてはいませんが、
> There has been an HTTP Error: status code 404
から想像すると、HTTP ハンドラが動いてないのではないですか?
IIS7 以降の統合パイプラインモードでは web.config の HTTP ハンドラの設
定方法が違うのですが、その点は対応されているでしょうか?紹介されているページの設定方法はクラシックモードまたは IIS6 以前のも
のです。- 回答としてマーク take.umbra 2010年10月23日 19:15
すべての返信
-
環境(OS, IIS, .NET, VS のバージョンなど)ぐらいは書いておきましょう。
紹介されているページをざっと見ただけで、深く調べてはいませんが、
> There has been an HTTP Error: status code 404
から想像すると、HTTP ハンドラが動いてないのではないですか?
IIS7 以降の統合パイプラインモードでは web.config の HTTP ハンドラの設
定方法が違うのですが、その点は対応されているでしょうか?紹介されているページの設定方法はクラシックモードまたは IIS6 以前のも
のです。- 回答としてマーク take.umbra 2010年10月23日 19:15
-
ご返答ありがとうございます。
また環境について失礼いたしました。
OS Windows7 professional
IIS 7.5
.net framework 3.5 SP1
VS 2008
>IIS7 以降の統合パイプラインモードでは web.config の HTTP ハンドラの設>定方法が違うのですが、その点は対応されているでしょうか?
>紹介されているページの設定方法はクラシックモードまたは IIS6 以前のも>のです。
統合パイプラインモードなるものをはじめて伺いました。
すこしネットで確認したところinetmgrのアプリケーションプールで設定できるとのことでしたので
統合パイプラインモードのみ停止させたところ、flashの表示さえできなくなりました。
(確認したところクラシックも統合も稼動しているのが???なのですが)
もしクラシックのみで稼動するならそれでもよかったのですがどうもだめみたいです。
HTTP ハンドラの設定方法についても???な状態なのでとりあえずネットを巡回してまた調べてみます。
(Multiple File Upload With Progress Bar Using Flash and ASP.NETに設置されている掲示板でもいくつか記載がありましたが
まったく飲み込めなくて。。。)
またわからないことがあれば、質問させてください。
>アップロードするフォルダに対する IIS のワーカープロセスの
>アクセス権は問題ないですか?
こちらに関しては大丈夫と思います。
IUSR,IIS_IUSRS,NETWORK SERVICE,IIS APPPOOL\DefaultAppPool
すべて権限を与えたのですが、変化ありませんでした。
実質はIIS APPPOOL\DefaultAppPoolのみでいいと思うのですが、念のため追加してみました。
現在はASP.netで単体のファイルアップロードを実現できているので
このあたりの確認は以前行っていました。
(要望があって複数ファイルの同時アップロードをとのことで今回のflashを用いた
アップロードを実装したいのですが。。。)
よろしくお願いします。 -
>IIS7 以降の統合パイプラインモードでは web.config の HTTP ハンドラの設>定方法が違うのですが、その点は対応されているでしょうか?
>紹介されているページの設定方法はクラシックモードまたは IIS6 以前のも>のです。
今、ネットを探ってきてようやくHTTP ハンドラの扱いがすこし理解できました。アプリケーションプールの設定は完全に勘違いしており統合パイプラインモードからクラシックモードへ変更したところ無事アップロードができました!!
参照元
この理解でいくと本番系のサーバーがIIS6なら変更なしで正常動作、
IIS7ならクラシックモードにする、またはweb.configを書き換えれば動作することになりそうです。
(今後のために書き換え方も勉強しようとは思いますが)
環境の説明なしにヒントを与えてくれたSurferOnWwwさんに感謝ですm(_ _)m
某サイトより WindowsOS ごとの IIS のバージョン。備忘録に。
Windows2000 | IIS5.0 WindowsXP(32bit) | IIS5.1 WindowsXP(64bit) | IIS6.0 WindowsServer2003 | IIS6.0 WindowsVista | IIS7.0 WindowsServer2008 | IIS7.0 WindowsServer2008(R2) | IIS7.5 Windows7 | IIS7.5