2013-05-31 48 views
1

我有一個功能,其中我將excel文件寫入應用程序解決方案的文件夾中,並從那裏讀取並允許保存。它在本地工作正常,但在服務器中部署後無法寫入,並且在讀取操作時拋出錯誤,表示無法找到該文件。無法在asp.net中寫入和讀取文件

請參考下面的代碼。

Microsoft.Office.Interop.Excel.Workbook workbook; 
      Microsoft.Office.Interop.Excel.Worksheet NwSheet; 

      appExl = new Microsoft.Office.Interop.Excel.Application(); 
      string serverPath = Server.MapPath("."); 

      string filenameToLoad = serverPath + "\\Page1Reports\\" + Session["UserAccentureID"].ToString() + ".xls"; 


      FileStream fileStream = new FileStream(filenameToLoad, FileMode.Open, FileAccess.ReadWrite, FileShare.Read); 
      fileStream.Write(result, 0, result.Length); 
      fileStream.Close(); 



//some more manipulation 

      workbook.Save(); 
      workbook.Close(); 
      appExl.Quit(); 



      System.IO.FileInfo file = new System.IO.FileInfo(filenameToLoad); 

      if (file.Exists) 
      { 
       Response.Clear(); 
       Response.ClearHeaders(); 
       Response.Charset = ""; 
       Response.ContentType = "Application/vnd.xls"; 
       Response.AddHeader("content-disposition", "attachment;filename=Page1SLScoreCardReport.xls"); 
       Response.AddHeader("Cache-Control", "max-age=0"); 
       Response.WriteFile(file.FullName); 

      } 

請讓我知道可能是什麼問題?

+0

請問您的IIS用戶對目錄和文件的適當的權限? –

+0

我去了Properties-> Security-> ADMIn有權利,USERS有權利。儘管CREATOR OWNER沒有所有權利,也不允許更新。我也刪除只讀到文件夾。請現在建議。我需要檢查其他地方嗎? – Richa

+0

什麼錯誤,你正在越來越..以及在哪一行? – Pranav

回答

0

檢查該問題:User ASP.NET runs under。它顯示了你(基於你的IIS版本),它在哪個用戶下運行。很可能你必須將文件夾/文件權限給IIS_IUSRS組(如果你有IIS 7SP2或更高版本)。 (使用屬性/安全對話框)。

而且仔細檢查路徑......有時候最愚蠢的錯誤是導致問題的一個;)

更新1: 另外,還要確保你正確的AR的E使用MapPath。您正在使用.。也許~是你想要的。下面是差異大彙總:Server.MapPath("."), Server.MapPath("~"), Server.MapPath(@"\"), Server.MapPath("/"). What is the difference?

enter image description here

+0

我記錄了在服務器上生成的路徑,並且這是正確的。:( – Richa

+0

嗨,我很抱歉...整個問題出現在代碼中 - FileStream fileStream = new FileStream(filenameToLoad,FileMode.Open,FileAccess.ReadWrite,FileShare。閱讀);文件模式是開放的..所以它是取代已存在的文件,如果沒有文件,它是無法寫入我認爲創建和工作正常的模式,但感謝所有的支持:) – Richa

+0

@Richa謝謝讓我知道。很高興聽到您找到解決方案!快樂編碼;) –