IISでHTTPでファイルのPUTがうまくいかなくて、いろいろ試して最終的にうまくいったのでメモします。
同様の現象をで困っている方にとって何かヒントになるかもしれません。
スポンサーリンク
状況を列挙します。
-IISの仮想ディレクトリ内にファイルをPUTする時、同じファイルが存在しない場合は問題なくアップロードできるのに、同じファイルが存在するとタイムアウトエラーが発生して、アップロードできない。
-認証は基本認証とWindows認証のみ有効
-WebDAVオーサリング規則は全てのユーザーに対して、読み取り、ソース、書き込みを許可
-同じフォルダをFTPサイトにして、FTPでアップロードする場合は問題なし。
-サーバーに設定してあるユーザーとパスワードを使って、ログオンしてPUTするようにしてあります。
-PUTするファイルと同名のファイルを一旦削除すると初回はアップロードでき、さらに2回目以降も上書きアップロードできます。
事前に用意したファイルがあるとダメです。通常は、これでうまくいくのですが、既存ファイルをPUTするときに、クライアント側ではタイムアウトエラーが発生、IISのログには403エラーが残っています。
-認証は基本認証とWindows認証のみ有効
-WebDAVオーサリング規則は全てのユーザーに対して、読み取り、ソース、書き込みを許可
-同じフォルダをFTPサイトにして、FTPでアップロードする場合は問題なし。
-サーバーに設定してあるユーザーとパスワードを使って、ログオンしてPUTするようにしてあります。
-PUTするファイルと同名のファイルを一旦削除すると初回はアップロードでき、さらに2回目以降も上書きアップロードできます。
事前に用意したファイルがあるとダメです。通常は、これでうまくいくのですが、既存ファイルをPUTするときに、クライアント側ではタイムアウトエラーが発生、IISのログには403エラーが残っています。
ダメだった対処法
-WEBサーバーを再起動
-PC再起動
-仮想ディレクトリを一旦削除して、再度設定し直した。
-エクスプローラで、仮想ディレクトリを設定してあるフォルダのプロパティを開き、セキュリティにログオンするユーザーが設定されていなかったので、設定してみたところ、適用する時に「コンテナー内のオブジェクトを列挙できませんでした。アクセスが拒否されています。」とエラーが発生
-PC再起動
-仮想ディレクトリを一旦削除して、再度設定し直した。
-エクスプローラで、仮想ディレクトリを設定してあるフォルダのプロパティを開き、セキュリティにログオンするユーザーが設定されていなかったので、設定してみたところ、適用する時に「コンテナー内のオブジェクトを列挙できませんでした。アクセスが拒否されています。」とエラーが発生
うまくいった対処法
仮想ディレクトリのフォルダの中身を全て、別のフォルダに移す。
↓
セキュリティ設定を更新。
↓
中身を元の位置に戻す。
↓
セキュリティ設定を更新。
↓
中身を元の位置に戻す。
こうすると、仮想ディレクトリ内の全てのファイルにセキュリティ設定が適用され、正常に動作するようになります。