0

ユーザーが画像をアップロードできるWebサイトを開発しています。画像を FTP フォルダー (db ではなく) に保存し、その詳細をデータベース (ファイル名、パスなど) に保存しています。

localhost で作業しているときに、次のコードが問題なく動作することに気付きました。エラーは発生しません。しかし、サーバーにアップロードすると(Windowsホスティングプランで)、ファイルが削除されず、次のエラーが表示されます:cannot delete the file because it is used by another process.

ディレクトリに適切なファイル権限があることを確認しましたが、それでも削除されません。奇妙なことに、FTP クライアントを使用して手動で削除すると、ファイルがロックされ、そこから削除できなくなります。そのためには、アプリ プールをリサイクルする必要があります。

ファイルへの完全なパスがある場合に、Windows ベースのサーバーからファイルを削除する最良の方法を探しています。

ローカルホストで使用したコードは次のとおりです (サーバーにアップロードすると、残りのコードが壊れます)。

if (File.Exists(path))
{
    File.Delete(path);
}

ありがとうございました。

4

1 に答える 1

0

アプリケーション プールをリセットした後にファイルを削除できる場合は、アップロード後にファイルへの参照を保持しているようです。アップロードをどのように処理し、アップロード後にファイルに対してどのようなアクションが実行されますか?


更新SaveAs(...):同じ問題を抱えている他の人を見つけまし

最後に、を呼び出すまでファイルはロックされたままのようSaveAs(...)です。そのため、ファイルを保存するかどうかを決定するサーバー側の検証がある場合、問題が発生する可能性がありますか? 私はこれをテストしなかったことに注意してください。

于 2013-06-10T07:43:50.693 に答える