2012-03-05 15 views
0

我正在使用ASP.net MVC 3和ASP.net Development Server。在Web瀏覽器中查看圖像,然後刪除它們會導致Web服務器重新啓動

我的web應用程序將來自Amazon S3的圖像文件下載到會話文件夾中。用戶然後在瀏覽器中看到圖像,因爲該應用的一個網頁引用了圖像。

如果我然後刪除會話文件夾的內容並重新下載應用程序重新啓動的映像。

它似乎只能重新啓動,如果我已經看過網頁中的圖像文件在重新下載它們之前刪除它們。因此,如果我不在網頁中查看它們,我可以刪除它們,再次執行下載並且應用程序不會重新啓動。同樣,如果我在網頁中查看它們,請不要刪除它們,只需在下載時將它們寫下來,應用程序就不會重新啓動。

任何想法,如果有一種方法,我可以說,刪除它們,以便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

能不能介紹一下你是如何刪除在會議文件夾中的圖片發表示例代碼? – 2012-03-05 11:15:31

回答

2

這是預期行爲;如果刪除網站的文件夾上下文中存在的文件,IIS將重新啓動以防它必須動態重新編譯任何內容。

這與保存對Web.Config的更改相同。

如果這太多問題,您需要移動網站文件夾以外的圖像。

關於會話,您可以像我建議的那樣移動資源,或考慮切換到SQL會話存儲或使用ASP.Net會話服務;從而將其與網站斷開連接。

在瀏覽器中加載圖像會導致IIS將其綁定到工作進程,可能是因爲緩存,但它是相關的,我想問問會話文件夾在哪裏。

您的文件夾結構是否與此類似?

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

or this?

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 – 2012-03-05 12:15:04

+0

那麼它是請求圖像的Web瀏覽器這使包含圖像的文件夾成爲網站的文件夾上下文?因爲,正如我所說的,如果我沒有用網頁查看圖像,我可以刪除它們而無需重新啓動應用程序。我最可能使用的解決方案是使用Guid生成新的會話文件夾,而不是重複使用同一會話文件夾(用會話標識標識)。 – 2012-03-05 12:22:16

+0

爲我的答案增加了更多細節。 – 2012-03-05 12:35:41

相關問題