在我的网站中,我需要创建管理员用户将其发送给一组用户的唯一网址。只要管理员创建新表单,就会创建唯一的URL。我知道我可以使用guid代表唯一的URL,但我正在寻找更短的东西(希望大约4个字符,因为它更容易记住)。如何在ASP.NET中生成一个如下所示的唯一URL:
http://mydomain.com/ABCD
据我所知,一些URL缩短网站(如bit.ly)使用非常短的唯一网址做了类似的事情。我有可以使用的算法吗?
答案 0 :(得分:2)
检查这些链接。希望你能发现它们有用:
Using the Google URL Shortener API with ASP.NET MVC 3 and C#
答案 1 :(得分:1)
像
这样的东西public static string GetRandomString (int length)
{
string charPool = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
StringBuilder sb = new StringBuilder();
Random rnd = new Random();
while ((length--) > 0)
sb.Append(charPool[(int)(rnd.NextDouble() * charPool.Length)]);
return sb.ToString();
}
并致电
GetRandomString(4);
答案 2 :(得分:0)
只需编写一个算法,从GUID中选择一定数量的字符(例如前4个或8个字符,每个偶数字符最多4个或8个字符。)
请务必针对数据库进行检查,以确保它尚未使用,以及是否重新生成它。作为一种保护措施,可能会超时(如果它试图生成10并且它们全部在使用中,放弃),但它不太可能使用所有可能的组合。
答案 3 :(得分:0)
我相信bit.ly会执行哈希,然后base64会对结果进行编码。你也可以这样做,虽然它会超过4个字符。请务必添加处理散列冲突的代码。当第一个哈希值正在使用时,您可以附加1,2,3等。
另一种方法是在数据库中创建一个新表。每次需要新URL时,都要在此表中添加一行。您可以使用PK作为URL值。这将仅使用四个字符为您提供最多10,000个唯一值。 Base64编码甚至更多。