【发布时间】:2010-12-25 14:15:06
【问题描述】:
我正在为我正在整理的一个简单网站开发一个快速验证码生成器,我希望在页面的 url 中传递一个加密密钥。我可以很容易地把它作为一个查询字符串参数来做,但我希望不要太容易(只是因为没有其他东西从查询字符串中运行)......
我的加密代码生成一个字节[],然后使用 Convert.ToBase64String(byte[]) 将其转换为字符串。然而,这个字符串仍然对 url 不太友好,因为它可以包含诸如 '/' 和 '=' 之类的东西。有谁知道 .NET 框架中有一个更好的函数来将字节数组转换为 url 友好的字符串?
我对 System.Web.HttpUtility.UrlEncode() 及其等价物了如指掌,但是,它们仅适用于查询字符串参数。如果我在路径中对 '=' 进行 url 编码,我的网络服务器会返回 400 Bad Request 错误。
无论如何,不是关键问题,但希望有人能给我一个好的解决方案
**编辑:为了绝对确定我正在对字符串做什么,我想我会提供更多信息。
我的加密算法产生的 byte[] 应该通过某种算法输入,以使其成为 url 友好的字符串。此后,它成为 XElement 的内容,然后用作 XSLT 转换的源文档,并用作锚点的 href 属性的一部分。我不相信 xslt 转换会导致问题,因为路径上的内容似乎是编码的查询字符串参数,但会导致 HTTP 400
我也尝试过在 base64 字符串上使用 HttpUtility.UrlPathEncode(),但这似乎也不起作用(我的 url 中仍然有 '/')**
【问题讨论】:
标签: c# base64 friendly-url