我想根据绝对虚拟目录获取对应的物理路径,但我使用Server.MapPath 和 Request.MapPath 都报同一个错误 “System.Web.HttpException: “http://localhost/My51”不是有效的虚拟路径。” 
看MSDN上帮助MapPath的参数明明是可以使用绝对路径和相对路径的!但为什么我使用绝对路径就是不可以?难道是微软带我笼子还是我有哪里没配置好或使用不正确?
形如 http://www.my51.com/user/index.apsx 我还可以想办法换成 "~/user/index.aspx".
但我现在要获取二级域名(http://img/my51.com)对应的物理路径,就没办法变成上面的形式了!
这个问题我要怎么解决呢?

解决方案 »

  1.   

    IIS 属性>>主目录>>配置>>选项中。把”启用父路径“前面打上勾。
      

  2.   

    注意 
    传递给 MapPath 方法的路径必须为应用程序相对路径,而不是绝对路径。
     
      

  3.   

    传递给 MapPath 方法的路径必须为应用程序相对路径通过文件得到其物理路径
    如             
    System.IO.FileInfo fileinfo = new System.IO.FileInfo(Server.MapPath(@"bin\Test.xml"));
    string fileDirectory = fileinfo.DirectoryName;
      

  4.   


    都是这样说的。但MSDN上明明说可以使用绝对路径的.NET Framework 类库
    HttpRequest..::.MapPath 方法 (String)
    将指定的虚拟路径映射到物理路径。命名空间:  System.Web
    程序集:  System.Web(在 System.Web.dll 中) 语法 
    Visual Basic(声明)Public Function MapPath ( _
        virtualPath As String _
    ) As String
    Visual Basic(用法)Dim instance As HttpRequest
    Dim virtualPath As String
    Dim returnValue As StringreturnValue = instance.MapPath(virtualPath)
    C#public string MapPath(
        string virtualPath
    )
    Visual C++public:
    String^ MapPath(
        String^ virtualPath
    )
    J#public String MapPath(
        String virtualPath
    )
    JScriptpublic function MapPath(
        virtualPath : String
    ) : String参数
    virtualPath
    类型:System..::.String当前请求的虚拟路径(绝对路径或相对路径)。返回值
    类型:System..::.String由 virtualPath 指定的服务器物理路径。
      

  5.   

    使用MapPath()方法会报错,肯定是参数的格式错误,注意你使用这个方法参数的格式比如 MapPath ("/fuck no pathklalfdkjkaldfjd") 即时这个路径是没有的,也不会报错