.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中,浏览器将为每个新会话至少获取一次资源,而不是从浏览器的私有缓存获取资源。