I need to fully URL Encode an email address.
HttpUtility.UrlEncode seems to ignore certain characters such as ! and .
I need to pass an email address in a url formated like this:
/Users/me@example.com/Comments
Because my WebMethod uri template looks like this:
[WebGet(UriTemplate = "Users/{emailAddress}/Comments")]
The period breaks WCF and will not pass the email address to my REST webservice method.
Removing the period passes the value just fine. I’m hoping there is a method which will encode all non alpha numeric characters since everything consuming this service will need to do this.
EDIT
I had considered using:
Convert.ToBase64String(Encoding.ASCII.GetBytes("something+me@example.com"))
Do most other languages have easy ways to convert a string to base64? My main concern is that our customers who consume this service will need to encode the email address using Java, PHP, Ruby, etc.
I’ve discovered a solution to this issue.
.Net 4.0 has actually fixed the problem with special characters in the URI Template.
This thread pointed me in the right direction. http://social.msdn.microsoft.com/Forums/en/dataservices/thread/b5a14fc9-3975-4a7f-bdaa-b97b8f26212b
I added all the config settings and it worked. But note, it ONLY works with a REAL IIS setup with .Net 4.0. I can’t seem to get it to work with the Visual Studio Dev IIS.
Update – Actually, I tried removing those config settings and it still works. It maybe be that .Net 4.0 has fixed this problem by default.