ASP.NET GUID作为唯一标识符 - URL重写

时间:2009-03-26 17:10:50

标签: asp.net

你可以帮忙吗?我有一个数据库,唯一标识符是GUIDS - 我们需要实现URL重写,但页面名称看起来很糟糕,例如:

testpage-2668FF87-0A3A-4cac-B9AB-2367D17A76C3.aspx 页面标题/唯一标识符

我的数据库,我设置我使用Ints作为唯一标识符,所以我从来没有遇到过这个问题:

testpage-1.aspx 页面标题/唯一标识符(int)

你有什么建议吗?

3 个答案:

答案 0 :(得分:3)

将带有GUIDS的映射表与较短的名称或表中具有较短名称的列挂起。 Guids保证是唯一的,但这并不意味着它们会产生最佳的唯一标识符。

答案 1 :(得分:0)

您的面向公众的网址应始终清晰易读。 (使用“slugs”,如上所述)这可确保您的每个页面为用户生成一致的内容(即,它不是基于会话的),并且以他们能够理解的方式对搜索引擎可见。

在数据库方面,只需跟踪额外的“url”列并编写查询以利用它而不是“视图”的GUID,但在内部使用GUID进行UPDATE查询。 :)

答案 2 :(得分:0)

我经常看到的不是暴露实际的guid,而是对它进行编码并更改一些字符:

public String ConvertBase64( Guid input ) {
    String sResult = Convert.ToBase64String(input.ToByteArray(), Base64FormattingOptions.None);
    sResult = sResult.Replace("/", "_").Replace("+", "-");
    sResult = sResult.Substring(0, 22);
    return sResult;
} // method::ConvertBase64(guid)

转换回来时,你会做相反的事情。

public String Base64ToGuid( String input) {
    input = input.Replace("_", "/").Replace("-", "+");
    result = new Guid(Convert.FromBase64String(input + "=="));
}