2009-03-26 16 views
1

お手伝いできますか?私はDBを持っている、ユニークな識別子はGUIDがある - 私たちは、ページ名は、例えばひどい探しただしURLの書き換えを実装する必要があります。ページの一意の識別子としてのASP.NET GUID - URLリライト

testpage-2668FF87-0A3A-4cac-B9AB-2367D17A76C3.aspx タイトルを/一意の識別子

私のDBの私は、この問題がなかったので、私は一意の識別子としてint型を使用している私の設定:ページ/一意の識別子(int型)の

testpage-1.aspx タイトルを

あなたは何を示唆していますか?

答えて

3

Ceate GUIDSを短い名前または短い名前のテーブルの列にマッピングするマッピングテーブル。 GUIDは一意であることが保証されていますが、一意の一意のIDであることを意味するわけではありません。

+0

これはテーブルである必要はなく、おそらくテーブルの一意の制約があります。 –

+0

はい、良い点。 – Alan

+0

「スラッグ」と呼ばれています。多くのCMSがそれを使用しています! –

0

あなたの一般に公開されているURLは、常に清潔で読みやすいものでなければなりません。 (上記のように「slugs」を使用)これにより、各ページがユーザーのために一貫したコンテンツを生成する(セッションベースではない)ことが保証されます。

データベース側では、追加の「url」列を追跡し、クエリを作成してGUIDの代わりに「ビュー」を使用しますが、GUIDを内部的にUPDATEクエリに使用します。 :)私が代わりに実際のGUIDをさらすことで、base64ではそれをエンコードし、文字の一部を変更する多くの見てきた何

0

:あなたが逆の操作を行うことをバック変換する場合

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 + "==")); 
}