gpt4 book ai didi

.net - 规范化 URI 以使其与 MakeRelativeUri 一起正常工作

转载 作者:行者123 更新时间:2023-12-04 19:23:28 24 4
gpt4 key购买 nike

Dim x AS New URI("http://www.example.com/test//test.asp")
Dim rel AS New URI("http://www.example.com/xxx/xxx.asp")
Console.Writeline(x.MakeRelativeUri(rel).Tostring())

在这里输出是:
../../xxx/xxx.asp

看起来正确的几乎所有 Web 服务器都将以下两个作为相同的请求处理:
http://www.example.com/test//test.asp
http://www.example.com/test/test.asp

修复此行为的最佳方法是有任何 API 来执行此操作,还是应手动创建新 URI 并删除路径中的所有//?

最佳答案

似乎在 LocalPath 部分用一个斜线替换所有多斜线是最好的解决方案。即使在将 URL 传递给 ASP.net 时,IIS 也会这样做。

以下代码将解决问题。

x = new Uri(string.Format("{0}://{1}:{2}{3}{4}", x.Scheme, x.Host, x.Port, Regex.Replace(x.LocalPath, @"(?<!\:)/{2,}", "/"), x.Query));

关于.net - 规范化 URI 以使其与 MakeRelativeUri 一起正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1874632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com