在ASP.NET中创建唯一的URL

时间:2011-02-17 04:27:35

标签: c# .net asp.net

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

http://mydomain.com/ABCD

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

4 个答案:

答案 0 :(得分:2)

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

URL Shortener for ASP.NET

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编码甚至更多。