我正在为一个简单的网站制作快速验证码生成器,希望能够在页面的URL中传递加密密钥。我可以将其作为查询字符串参数轻松处理,但是我不想这样做(因为没有其他内容使用查询字符串)......
我的加密代码生成一个byte[],然后使用Convert.ToBase64String(byte[])转换成一个字符串。然而,这个字符串仍然不太适合URL,因为它可能包含'/'和'='等字符。有没有人知道在.NET框架中有更好的函数将字节数组转换为适合URL的字符串?
我知道System.Web.HttpUtility.UrlEncode()及其等效方法,但它们只在查询字符串参数中正常工作。如果我在路径中对'='进行编码,我的Web服务器会返回400 Bad Request错误。
总之,这不是致命问题,但希望有人能给我一个好的解决方案。
**编辑:为了确保自己完全明白正在处理的字符串,我觉得应该提供更多信息。
从我的加密算法产生的byte[]应该通过某种算法转换成适合URL的字符串。之后,它成为XElement的内容,然后用作href属性的一部分,作为XSLT变换的源文档。我不认为xslt变换会导致问题,因为出现在路径上的内容似乎是一个编码的查询字符串参数,但引起HTTP 400错误。
我还尝试过对base64字符串使用HttpUtility.UrlPathEncode(),但似乎也没有解决问题(我的URL中仍然有'/')。**
我的加密代码生成一个byte[],然后使用Convert.ToBase64String(byte[])转换成一个字符串。然而,这个字符串仍然不太适合URL,因为它可能包含'/'和'='等字符。有没有人知道在.NET框架中有更好的函数将字节数组转换为适合URL的字符串?
我知道System.Web.HttpUtility.UrlEncode()及其等效方法,但它们只在查询字符串参数中正常工作。如果我在路径中对'='进行编码,我的Web服务器会返回400 Bad Request错误。
总之,这不是致命问题,但希望有人能给我一个好的解决方案。
**编辑:为了确保自己完全明白正在处理的字符串,我觉得应该提供更多信息。
从我的加密算法产生的byte[]应该通过某种算法转换成适合URL的字符串。之后,它成为XElement的内容,然后用作href属性的一部分,作为XSLT变换的源文档。我不认为xslt变换会导致问题,因为出现在路径上的内容似乎是一个编码的查询字符串参数,但引起HTTP 400错误。
我还尝试过对base64字符串使用HttpUtility.UrlPathEncode(),但似乎也没有解决问题(我的URL中仍然有'/')。**
BitConverter.ToString
中的十六进制数字更紧凑。 - LukeHSystem.Web
组件中真是太恼人了。唉。 - Asbjørn Ulsberg