1

ユーザーがSQLメンバーシッププロバイダーを使用してメンバーシップに登録するASP.Net MVCのWebアプリケーションに取り組んでいます。彼らが登録すると、システムに入れられますが、承認されません。次に、コードは、指定された電子メールで承認電子メールをユーザーに送信します。

BfEncrypt refid = new BfEncrypt();
refid.Encrypt(user.ReferenceID);
string code = HttpContext.Current.Server.UrlEncode(refid.CipherText);
    ...
Body += "<a href=\"http://localhost:1091/approve/" + code + "\">Approval Link</a>\n\r\n\r";

しかし、ユーザーがリンクをクリックすると、次のエラーが発生します。

説明: HTTP 404。探しているリソース (またはその依存関係の 1 つ) は、削除されたか、名前が変更されたか、一時的に利用できない可能性があります。次の URL を見直して、スペルが正しいことを確認してください。

要求された URL: /Approve/k/9IHrY43os=

問題は、送信する前にリンクを URL エンコードしている場合、アクションを呼び出す前にデコードするのはなぜですか? エラーが発生したとき、ブラウザの URL は実際には「http://localhost:1091/Approve/k%2f9IHrY43os%3d」です。ルーティングは正しく設定されていますが、URL の暗号化された文字列に含まれる余分な「/」は考慮されていません (とにかくそこにあってはならないためです)。

4

1 に答える 1

1

URLEncode を使用する代わりに、base64 としてエンコードできます。

于 2009-02-23T17:55:03.957 に答える