在ASP.NET中创建唯一的URL

在我的网站中,我需要创建一个管理员用户将其发送给一组用户的唯一URL。 只要管理员创建新表单,就会创建唯一的URL。 我知道我可以使用guid来表示唯一的URL,但我正在寻找更短的东西(希望大约4个字符,因为它更容易记住)。 如何在ASP.NET中生成一个如下所示的唯一URL:

http://mydomain.com/ABCD 

据我所知,一些URL缩短网站(如bit.ly)使用非常短的唯一URL做了类似的事情。 有可用的算法吗?

检查这些链接。 希望你发现它们有用:

ASP.NET的URL Shortener

在ASP.NET MVC 3和C#中使用Google URL Shortener API

怎么样的

 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); 

只需编写一个算法,从GUID中选择一定数量的字符(例如前4或8个字符,每个偶数字符最多4或8个字符。)

请务必针对数据库进行检查,以确保它尚未使用,以及是否重新生成它。 作为一种安全措施,可能会超时(如果它试图产生10并且它们全部在使用中,放弃),但它不太可能使用所有可能的组合。

我相信bit.ly执行哈希,然后base64编码结果。 你可以这样做,虽然它将超过4个字符。 请务必添加处理散列冲突的代码。 当第一个哈希值正在使用时,您可以附加1,2,3等。

另一种方法是在数据库中创建新表。 每次需要新URL时,都要在此表中添加一行。 您可以使用PK作为URL值。 这将仅使用四个字符为您提供最多10,000个唯一值。 Base64编码甚至更多。