ASP.NET GUID作为唯一标识符-URL重写
你能帮忙吗?我有一个DB,唯一标识符是GUID-我们需要实现URL重写,但是页面名称看起来很糟糕,例如: 测试页-2668FF87-0A3A-4cac-B9AB-2367D17A76C3.aspx 页面标题/唯一标识符 我的数据库是我设置的,我使用INT作为唯一标识符,因此我从未遇到过这个问题: testpage-1.aspx 页面标题/唯一标识符(int)ASP.NET GUID作为唯一标识符-URL重写,asp.net,Asp.net,你能帮忙吗?我有一个DB,唯一标识符是GUID-我们需要实现URL重写,但是页面名称看起来很糟糕,例如: 测试页-2668FF87-0A3A-4cac-B9AB-2367D17A76C3.aspx 页面标题/唯一标识符 我的数据库是我设置的,我使用INT作为唯一标识符,因此我从未遇到过这个问题: testpage-1.aspx 页面标题/唯一标识符(int) 您有什么建议?将带有GUID的映射表设置为较短名称,或将表中的列设置为较短名称。guid保证是唯一的,但这并不意味着它们是最好的唯一标识符
您有什么建议?将带有GUID的映射表设置为较短名称,或将表中的列设置为较短名称。guid保证是唯一的,但这并不意味着它们是最好的唯一标识符。面向公众的URL应该总是干净易读的。(如上所述,使用“slug”)这可以确保您的每个页面为用户生成一致的内容(即,它不是基于会话的),并且搜索引擎能够以他们能够理解的方式看到它
在数据库端,只需跟踪额外的“url”列并编写查询以利用它,而不是“视图”的GUID,但在内部使用GUID进行更新查询。:) 我经常看到的不是公开实际的guid,而是对其进行base64编码并更改一些字符:
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 + "=="));
}
这不需要是一个表,只是表中的一列——可能有一个唯一的约束。它被称为“slug”。很多CMS都使用它!