0

さて、IIS に CMS サイトがあり、ASP.NET 4.0 で実行されています。

ユーザーはサイト上のいくつかの画像を更新したいと考えていますが、それらの画像が最近提供されたため、IIS はそれらの画像に対してハンドルを開いており、ファイルをロックしています。これにより、更新されたバージョンのファイルをアップロードしようとすると、次のエラーが表示されます。

The process cannot access the file 'X:\inetpub\wwwroot\sitename\Images\Banner\Temp\5.jpg' because it is being used by another process.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.IO.IOException: The process cannot access the file 'X:\inetpub\wwwroot\sitename\Images\Banner\Temp\5.jpg' because it is being used by another process.

Source Error: 
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace: 

[IOException: The process cannot access the file 'X:\inetpub\wwwroot\sitename\Images\Banner\Temp\5.jpg' because it is being used by another process.]
    System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) +14328663
    System.IO.File.InternalDelete(String path, Boolean checkHost) +14293114
    Admin_Settings_EditHomePageBanner.btnSave_Click(Object sender, ImageClickEventArgs e) +1109
    System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +134
    System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument) +204
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3804

ASP.NET コードでプログラムを使用して、IIS にファイルへのキャッシュされたハンドルを解放して更新できるようにする方法はありますか? 明らかに、IIS プロセス全体をリサイクルすることは、実際には実行可能なアプローチではありません。

4

2 に答える 2

1

ブロ、私はあなたが問題を正しく診断したとは思わない。IISがこの方法でファイルを保留することは決してありませんが、そうではないと確信しています。

.Netのビットマップクラスを使用して画像を変更/表示するなど、コード内のどこかでこれらの画像をいじってみましたか?あなた自身のコードがこれらの画像を抑制していると思います。ここにコードを貼り付けることができれば、私は助けになるかもしれません。

于 2012-11-28T17:30:36.840 に答える
0

再起動は、利用可能な最良および最悪のオプションです。更新されたglobal.asaxをデプロイすることで、もう一度試してみることができます

于 2012-11-28T17:31:54.883 に答える