2012-03-05 8 views
0

私はASP.net MVC 3とASP.net Development Serverを使用しています。Webブラウザで画像を表示して削除すると、Webサーバが再起動します

私のWebアプリケーションは、イメージファイルをAmazon S3からセッションフォルダにダウンロードします。ユーザーは、アプリのWebページの1つが画像を参照しているため、ブラウザに画像が表示されます。

セッションフォルダの内容を削除して、イメージを再ダウンロードすると、アプリケーションが再起動します。

ウェブページの画像ファイルを見て、再ダウンロードする前に削除してください。だから私はそれらを削除することができますWebページでそれらを見ていない場合は、再度ダウンロードを行うと、アプリケーションが再起動されません。同様に、私はそれらをWebページで見ると、それらを削除せず、ダウンロードを実行するときに上書きするだけで、アプリケーションは再起動しません。

Webサーバーが再ダウンロードするかどうか気にしないように、削除する方法があれば、考えてください。

私はあなたが見ているセッションを失いたくはありません。ここで

は、削除コードは、これは予想される動作です...

public static void EmptyFolder(string directory) 
    { 
     if (!Directory.Exists(directory)) 
     { 
      return; 
     } 

     DirectoryInfo directoryInfo = new DirectoryInfo(directory); 

     EmptyFolder(directoryInfo); 
    } 

    private static void EmptyFolder(DirectoryInfo directoryInfo) 
    { 
     foreach (FileInfo file in directoryInfo.GetFiles()) 
     { 
      file.Delete(); 
     } 

     foreach (DirectoryInfo subfolder in directoryInfo.GetDirectories()) 
     { 
      EmptyFolder(subfolder); 

      subfolder.Delete(); 
     } 
    } 
+0

セッションフォルダ内の画像の削除方法に関するサンプルコードを投稿できますか? –

答えて

2

です。 Webサイトのフォルダコンテキストに存在するファイルを削除すると、IISは何かを動的に再コンパイルする必要がある場合に再起動します。

Web.Configに変更を保存するのと同じことです。

これが問題になりすぎる場合は、画像をウェブサイトフォルダの外に移動する必要があります。

セッションに関しては、提案したようにリソースを移動するか、SQLセッションストレージに切り替えるか、ASP.Netセッションサービスを使用することを検討してください。ウェブサイトから切断されます。

イメージをブラウザに読み込むと、IISがキャッシングのために作業者プロセスにバインドされますが、セッションフォルダがどこにあるかを尋ねるのは関係ありません。

あなたのフォルダ構造はこれに似ていますか?

c:\ 
    inetpub 
    |__ + wwwroot 
      |__ - MyWebSite 
      |__ - SessionFolder 

またはこれですか?

c:\ 
    inetpub 
    |__ + wwwroot 
      |__ - MyWebSite 
       |__ - bin 
       |__ - Content 
       |__ - Scripts 
       |__ - SessionFolder 
       |__ - Views 
       |__ - web.config 
       |__ - global.asax 
+0

このリンクには、セッション状態のストレージを変更する方法の詳細が含まれています。http://msdn.microsoft.com/en-US/library/ms178586(v=vs.80).aspx –

+0

これは、それはイメージを含むフォルダをウェブサイトのフォルダコンテキストにしますか?私が言ったように、私はWebページで画像を表示しないと、アプリを再起動せずに画像を削除できます。これに対する解決策は、同じセッションフォルダ(セッションIDで識別される)を再利用する代わりに、Guidを使用して新しいセッションフォルダを生成することです。 –

+0

は私の答えにもっと詳しく書きました。 –

関連する問題