あなたは2つのことをすることができます。
まず、ASP.NETテーブルまたは新しいマップテーブルのいずれかでデータベースに追加のインクリメンタルIDを作成し、Guidに接続する番号を小さくすることができます。なぜ少ない数なのか?Guidは128ビットであり、URLでそのまま使用するには大きすぎるためです。
次に、Guidに接続されているこの小さい番号をURLで使用できます。ここでの唯一のエクスプロイトの問題は、誰でもユーザーのすべてのリストを見つけることができるということです。だから、この公開を持っているので、あなたがそれらも公開していれば問題ではありません。したがって、ユーザーを見つけるためにURLの番号を使用し、ユーザー名はSEOを向上させるためのものです。番号は同じままですが、名前は変更される可能性があるため、ユーザーの検索には番号のみが使用されます。
2番目の解決策は、128ビットのGUID番号を圧縮して73の基本文字列にエンコードすることです。73はURLで許可されているエスケープ解除文字であるため、73の基本文字を選択しました。
この変換を行うために私が見つけたいくつかの例を次に示します。
http://www.singular.co.nz/blog/archive/2007/12/20/shortguid-a-shorter-and-url-friendly-guid-in-c-sharp.aspx
http://jopinblog.wordpress.com/2009/02/04/a-shorter-friendlier-guiduuid-in-net/
http://buildmaestro.wordpress.com/2011/04/27/installscript-to-transform-guid-into-compressed-guid/
base64への単純な変換(Dave Transomsから)
public static string Encode(Guid guid)
{
string encoded = Convert.ToBase64String(guid.ToByteArray());
encoded = encoded
.Replace("/", "_")
.Replace("+", "-");
return encoded.Substring(0, 22);
}
public static Guid Decode(string value)
{
value = value
.Replace("_", "/")
.Replace("-", "+");
byte[] buffer = Convert.FromBase64String(value + "==");
return new Guid(buffer);
}