C# ASP.NET:Server.MapPath返回字符串NOT\u A\u VALID\u FILESYSTEM\u PATH

C# ASP.NET:Server.MapPath返回字符串NOT\u A\u VALID\u FILESYSTEM\u PATH,c#,asp.net,C#,Asp.net,在我的ASP.NET应用程序中,本应将文件写入磁盘的方法有时会意外地以文件名无效的文件系统路径写入文件 (简化)代码为: 为什么Server.MapPath返回字符串“NOT\u A\u VALID\u FILESYSTEM\u PATH”?在以下两个条件都为真时返回字符串“NOT\u VALID\u FILESYSTEM\u PATH”: 提供给Server.MapPath的参数包含一个不能出现在有效文件名中的字符,例如冒号(“:”)或问号(“?”) 在应用程序的web.config文件中,s

在我的ASP.NET应用程序中,本应将文件写入磁盘的方法有时会意外地以文件名
无效的文件系统路径
写入文件

(简化)代码为:

为什么Server.MapPath返回字符串“NOT\u A\u VALID\u FILESYSTEM\u PATH”?

在以下两个条件都为真时返回字符串“NOT\u VALID\u FILESYSTEM\u PATH”:

  • 提供给Server.MapPath的参数包含一个不能出现在有效文件名中的字符,例如冒号(“:”)或问号(“?”)
  • 在应用程序的web.config文件中,system.web/httpRuntime元素包含该属性
  • 如果web.config没有
    relaxedUrlToFileSystemMapping=“true”
    ,则对Server.MapPath的调用将引发System.NotSupportedException,并显示消息“给定路径的格式不受支持。”

    在以下两个条件均为真时返回字符串“not_a_VALID_FILESYSTEM_path”:

  • 提供给Server.MapPath的参数包含一个不能出现在有效文件名中的字符,例如冒号(“:”)或问号(“?”)
  • 在应用程序的web.config文件中,system.web/httpRuntime元素包含该属性
  • 如果web.config没有relaxedUrlToFileSystemMapping=“true”,则对Server.MapPath的调用将引发System.NotSupportedException,并显示消息“给定路径的格式不受支持”

    private void WriteFile(string fileID)
    {
        string fileName = Server.MapPath("/Data/" + fileID + ".xml");
    
        // (More code that writes data to that file...)
    }