Uri.EscapeDataString 和 Server.UrlEncoding 的区别

今天在iis中访问一个即含有空格又含有#的文件名时,通过 iis 直接访问都无法到达,显示404,即便是 urlencode 文件名后依然无济于事,最后通过 gpt 问到了答案。

Uri.EscapeDataStringServer.UrlEncode是.NET Framework中用于URL编码的两个方法,它们有以下区别:

  1. 命名空间和所属类:Uri.EscapeDataString方法位于System命名空间下的Uri类中,而Server.UrlEncode方法位于System.Web命名空间下的HttpServerUtility类中。因此,Uri.EscapeDataString可以在任何.NET应用程序中使用,而Server.UrlEncode主要用于Web应用程序。

  2. 编码范围:Uri.EscapeDataString方法对所有非保留字符进行编码,包括URL路径中的斜杠(/)和查询字符串中的等号(=)。而Server.UrlEncode方法只对特定的字符进行编码,例如空格(空格被编码为+)和查询字符串中的保留字符(如=&?等)。

  3. 编码方式:Server.UrlEncode方法将空格编码为+符号,而Uri.EscapeDataString方法将空格编码为%20。这意味着在处理查询字符串时,Server.UrlEncode相对于Uri.EscapeDataString更适合,因为大多数服务器端语言(如ASP.NET)会自动将+解码为空格。

  4. 使用场景:Uri.EscapeDataString方法更通用,可以在各种情况下使用,包括生成URL、构建查询字符串等。Server.UrlEncode方法主要用于ASP.NET Web应用程序中,对于在Web环境下处理URL和查询字符串时更常见。

综上所述,选择使用哪个方法取决于具体的使用场景和需求。一般来说,如果是在Web应用程序中处理URL和查询字符串,优先考虑使用Server.UrlEncode方法。如果需要在非Web环境下进行URL编码,可以使用Uri.EscapeDataString方法。

posted on   空明流光  阅读(155)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2023-05-17 c# 获取指定进程的命令行
2022-05-17 tomcat 打开实时控制台
2022-05-17 centos 7 tomcat 8 开机自启
2021-05-17 无日志文件还原数据库(只有mdf无ldf)
2019-05-17 c# 动态加载tlb为程序集

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示