C# HttpUtility.UrlDecode正在替换+;有空间

C# HttpUtility.UrlDecode正在替换+;有空间,c#,asp.net-identity,urldecode,system.web,C#,Asp.net Identity,Urldecode,System.web,我正在尝试使用Asp.net WebApi控制器中的HttpUtility.UrlDecode解码Microsoft Identity Register电子邮件令牌。我注意到这个方法将+字符替换为空格 e、 g HttpUtility.UrlDecode(“Twi7p9eKNTbb6czuonazQbN8JFKvdcqfshzkphpp8VBZMSx8VzWmIQrWDV34YHG6Xe/FCjTyiaX8p+lwYdjyk/oJ/+eFKOOez0/tidylCFCT62uxy5edvzbQf

我正在尝试使用Asp.net WebApi控制器中的
HttpUtility.UrlDecode
解码Microsoft Identity Register电子邮件令牌。我注意到这个方法将
+
字符替换为
空格

e、 g

HttpUtility.UrlDecode(“Twi7p9eKNTbb6czuonazQbN8JFKvdcqfshzkphpp8VBZMSx8VzWmIQrWDV34YHG6Xe/FCjTyiaX8p+lwYdjyk/oJ/+eFKOOez0/tidylCFCT62uxy5edvzbQfz8bvskPFgWSN3JjLqlQbSCve3WBYQ40ugzB+TGV+SRbrth69fxWI6YrFmWoyK7XBtpWs”)

返回
twi7p9ekntBB6czuonazQBN8JFKVDCQFSHZKPHPP8VBZMSX8VZWMIQRWDV34YHG6XE/FCjTyiaX8p lwYdjyk/oJ/eFKOOez0/TidylCFCT62Uxy5EDVZBQFZBZ8BvskPFGWSDSN3JJLQBSCAVE3WBYQ40UGZB TGV SRBRTH69FXWI6YRFMfMfMfMfMfMfMfMfMfMfMfMfWoyyyyyyyK7xB7xB7xBtpws

如果您观察到,返回标记之间有空格。这些空格是由于原始标记中的
+
符号而形成的

我从浏览器中获取令牌作为
api路由:/api/{token}/validate
的一部分


我是否可以解码microsoft identity生成的令牌而不替换
+
符号

在我看来,该令牌不是URL编码的。如果它是URL编码的,斜杠可能是百分比编码的。你确定它还没有被解码吗?除了@Matti说的,
String.Replace(“+”,“%2B”)
可能吗?你应该先编码,然后“+”将变成“%20”,否则加号将被替换为空格。这是标准的HTTP。