On my desktop machine, I get this..
var result = Uri.EscapeDataString("zdskjhf&*^65sdfh/.<>\\sdf");
// result == zdskjhf%26%2A%5E65sdfh%2F.%3C%3E%5Csdf
Now, on my CI server part of the result is NOT encoded.... I get this
\\ result == zdskjhf%26*%5E65sdfh%2F.%3C%3E%5Csdf
Notice the asterisk in the middle of the second result? in the first result, it's getting encoded.
Can anyone explain what's going on, please?
Here's an .NET Fiddle which is using .NET 4.5 and shows the asterisk is encoded...
So does this mean my machine and .NET Fiddle are both wrong ? Or we are both right and the CI Server is wrong?
Some diagnostic info from the build server..Microsoft (R) Build Engine version 12.0.30723.0
[Microsoft .NET Framework, version 4.0.30319.34209]
Copyright (C) Microsoft Corporation. All rights reserved.
(i'm not too sure how to get this info, for my local dev machine. It's win8.1 + VS 2013 Update 3.)
All projects are .NET 4.5 ...not 4.5.1
I've decided to run this code on all the .NET frameworks (that matter). Here's the results.
Data: abcde *.(.)."
.NET 2.0: abcde%20*.(.).
.NET 3.0: abcde%20*.(.).
.NET 3.5: abcde%20*.(.).
.NET 4.0: abcde%20*.(.).
-- MSDN NOTES: Bug now fixed here --
.NET 4.5: abcde%20%2A.%28.%29.
.NET 4.5.1: abcde%20%2A.%28.%29.
.NET 4.5.2: abcde%20%2A.%28.%29.
.NET 4.5.3: abcde%20%2A.%28.%29.
This then suggests that
.NET 4.5
, those values are NOT encoded. Kewl, fine.=
.NET 4.5
those values ARE encoded.
LINK: this is a similar SO question.
REF: this is the build result from the CI server which includes lots of debug info...
.NET 4.5 changed the behavior of this method. Search for "escape".
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With