【问题标题】:VirtualPathUtility.IsAbsolute(path) throws exception when path contains parameters当路径包含参数时,VirtualPathUtility.IsAbsolute(path) 抛出异常
【发布时间】:2011-07-04 10:46:36
【问题描述】:

为什么是在 ASP.NET 中

VirtualPathUtility.IsAbsolute("/~abc") 工作正常。

但是VirtualPathUtility.IsAbsolute("/~abc?n=1) 抛出异常:

System.Web.HttpException: '~/abc?n=1' 不是有效的虚拟路径?

更新

我刚刚检查了 .NET 3.5 和 .NET 4.0 之间的行为存在差异。 VirtualPathUtility.IsAbsolute("/~abc?n=1) 在 4.0 中可以正常工作,但在 3.5 中不行。你们有谁知道他们为什么改变了这一点吗?

【问题讨论】:

    标签: c# .net asp.net exception-handling


    【解决方案1】:

    因为/~abc?n=1不是路径,所以它也包含URL的查询字符串部分(/~abc是路径,n=1是查询字符串)

    【讨论】:

    • 我注意到 .NET 3.5 和 4.0 处理这种情况的方式有所不同。
    【解决方案2】:

    您要传递的是带有查询参数的 url,而不是路径。使用路径。顺便说一句,如果字符串以“/”字符开头,则 IsAbsolute 返回 true,因此您不需要使用该方法 - 只需自行检查即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 1970-01-01
      • 1970-01-01
      • 2013-05-24
      相关资源
      最近更新 更多