Decode escaped Url without using HttpUtility.UrlDe

2019-01-14 05:48发布

Is there any function that converts an escaped Url string to its unescaped form? System.Web.HttpUtility.UrlDecode() can do that job but I don't want to add a reference to System.Web.dll. Since my app is not a web application, I don't want to add a dependency for only using a function in an assembly.

UPDATE: Check Rick Strahl's blog post about the same issue.

标签: .net url
7条回答
Bombasti
2楼-- · 2019-01-14 06:03

Re not loading System.Web.dll - as others have noted, it isn't worth getting excited unless you know that you need to deal with clients that might not have it ("client profile", "compact framework", "micro framework", "silverlight").

Re space; it won't be a lot really; note that .NET assemblies are JITted on a method-by-method basis, so there won't be any significant overhead just from using a few methods.

The real issue (IMO) is your level of confidence that the client has System.Web.dll; if you are happy that they are using the full framework, then just go for it.

查看更多
Melony?
3楼-- · 2019-01-14 06:11

You already have a HUGE dependency on the .NET framework, CLR etal. So, in fact, you already have an indirect dependency on System.Web.DLL; your application CAN NOT RUN without its presence on the local machine.

And you're worried about memory? Do you have memory issues? If you have memory issues so extreme you can't load a couple KBs of DLL into your app's memory, then why are you coding .NET? Or are you just prematurely optimizing?

So don't worry about it.

查看更多
相关推荐>>
4楼-- · 2019-01-14 06:16

If you are using .NET 4.0 or later, you can use WebUtility.UrlDecode which works with client profile and also correctly processes plus signs (see this discussion).

查看更多
神经病院院长
5楼-- · 2019-01-14 06:20

System.Net.WebUtility.HtmlDecode is also working on .NET 4.0 Client Profile.

查看更多
\"骚年 ilove
6楼-- · 2019-01-14 06:30

EDIT: Use the static method Uri.UnescapeDataString() to decode your URLs:

Encoded: http%3a%2f%2fwww.google.com%2fsearch%3fhl%3den%26q%3dsomething%20%2323%26btnG%3dGoogle%2bSearch%26aq%3df%26oq%3d

Decoded: http://www.google.com/search?hl=en&q=something #23&btnG=Google+Search&aq=f&oq=

查看更多
干净又极端
7楼-- · 2019-01-14 06:30

The Microsoft ACE team have an extended (and better) version of decode, in the Anti-XSS library. However I'm not sure if it just passes through.

(I don't see why you're that worried about the dependency on System.web.dll to be honest)

查看更多
登录 后发表回答