.net Control.ResolveUrl与Control.ResolveClientUrl与VirtualPath.ToAbsolute

.net Control.ResolveUrl与Control.ResolveClientUrl与VirtualPath.ToAbsolute,.net,asp.net,.net,Asp.net,在解析以波浪线(~)开头的路径时,使用其中一种方法比使用另一种方法有什么好处 一般来说,在html中发送相对路径还是绝对路径更好?ResolveUrl和ResolveClientUrl的区别在于ResolveClientUrl返回相对于当前页面的路径,ResolveUrl返回相对于站点根的路径: 我建议使用绝对路径 编辑:Rick Strahl发表了一篇关于这方面的好文章 Edit2:删除了有关缓存的部分。不会增加答案,也不一定准确 下面是另一篇文章,解释了ASP.NET中解析路径的各种方法之

在解析以波浪线(~)开头的路径时,使用其中一种方法比使用另一种方法有什么好处


一般来说,在html中发送相对路径还是绝对路径更好?

ResolveUrl和ResolveClientUrl的区别在于ResolveClientUrl返回相对于当前页面的路径,ResolveUrl返回相对于站点根的路径:

我建议使用绝对路径

编辑:Rick Strahl发表了一篇关于这方面的好文章

Edit2:删除了有关缓存的部分。不会增加答案,也不一定准确


下面是另一篇文章,解释了ASP.NET中解析路径的各种方法之间的差异-


请注意,如果路径中包含查询字符串,virtualPath.ToAbsolute(virtualPath)将引发异常

HttpException消息将沿着“~/YourVirtualPath/YourPage.aspx?YourQueryStringArg=FooBar”的行显示,这不是有效的虚拟路径


我注意到另一个不同点:

代码:

string value=“~/Docs/Hello&World.aspx”
Response.Write(HyperLink1.ResolveClientUrl(值)+“
Response.Write(HyperLink1.ResolveUrl(值)+“
”)

结果:

Docs/Hello%20&%20World.aspx


/Docs/Hello&World.aspx

+1很好。顺便说一句,它对缓存有什么帮助?(哪种缓存?)当时我认为它可以帮助客户端(或浏览器)缓存来自服务器的图像等(也就是说,如果缓存服务不是非常智能,如果使用相对路径,它可能会复制项目)。但是我不能确定,所以我删除了它。如果你一直使用一个使用无Cookie会话的遗留应用程序,其中会话Id位于URI中,那么VirtualPath实用性.ToAbsolute将从URL中排除会话Id,即更好地缓存CSS、JPG和外部Javascript文件。因为如果SessionID在URL中,浏览器将为每个新会话至少获取一次资源,而不是从浏览器的私有缓存获取资源。