Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET GUID作为唯一标识符-URL重写_Asp.net - Fatal编程技术网

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

ASP.NET GUID作为唯一标识符-URL重写,asp.net,Asp.net,你能帮忙吗?我有一个DB,唯一标识符是GUID-我们需要实现URL重写,但是页面名称看起来很糟糕,例如: 测试页-2668FF87-0A3A-4cac-B9AB-2367D17A76C3.aspx 页面标题/唯一标识符 我的数据库是我设置的,我使用INT作为唯一标识符,因此我从未遇到过这个问题: testpage-1.aspx 页面标题/唯一标识符(int) 您有什么建议?将带有GUID的映射表设置为较短名称,或将表中的列设置为较短名称。guid保证是唯一的,但这并不意味着它们是最好的唯一标识符

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

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

我的数据库是我设置的,我使用INT作为唯一标识符,因此我从未遇到过这个问题:

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


您有什么建议?

将带有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都使用它!