2014-11-06 57 views
0

在我的ASP.NET應用程序中,應該將文件寫入磁盤的方法有時會意外地以文件名NOT_A_VALID_FILESYSTEM_PATH寫入文件。ASP.NET:Server.MapPath返回字符串NOT_A_VALID_FILESYSTEM_PATH

(簡化)代碼:

private void WriteFile(string fileID) 
{ 
    string fileName = Server.MapPath("/Data/" + fileID + ".xml"); 

    // (More code that writes data to that file...) 
} 

爲什麼返回使用Server.Mappath字符串 「NOT_A_VALID_FILESYSTEM_PATH」?

回答

7

Server.MapPath返回字符串「NOT_A_VALID_FILESYSTEM_PATH」在以下兩個條件都爲真:

  1. 提供給使用Server.Mappath的參數包括不能出現在一個有效的文件名,如結腸的字符(」 :「)或問號(」?「);
  2. 在應用程序的web.config文件中,system.web/httpRuntime元素包含屬性relaxedUrlToFileSystemMapping="true"

如果web.config中沒有relaxedUrlToFileSystemMapping="true",然後調用將使用Server.Mappath而不是拋出一個帶有消息System.NotSupportedException「不支持給定路徑的格式。」