MVC Webアプリケーションは、任意の文字(%、+、/など)を含むことができるアクティベーションリンクを生成します。私は、文字列をエンコードし、リンクを生成URL:URLエンコードされたASP.NET MVCで処理されるパラメータ
new UrlHelper(HttpContext.Current.Request.RequestContext)
.RouteUrl("AccountActivation",
new { id = HttpContext.Current.Server.UrlEncode(activationString) };
は、ドメインを追加し、同じように見えます:URLは、ユーザーに渡され
http://localhost/AccountActivation/asdlkj223%25asd%2Basw3fgasdme
。それは私には罰金に見える
routes.MapRoute(
"ActivateAccount",
"AccountActivation/{id}",
new { controller = "Account", action = "Activate", id = ""});
が、ASP.NET開発サーバーと私にHTTPエラー400与えるIIS - 不正要求を:
この場合のルートがあります。つまり、私には見えないURLに問題があります。
ルートの説明に{ID}を取り除く(私もノー成功と{* ID}を試してみました):
routes.MapRoute(
"ActivateAccount",
"AccountActivation",
new { controller = "Account", action = "Activate"});
URLは次のようになります。
http://AccountActivation?id=asdlkj223%25asd%2Basw3fgasdme
と彼らちょうどいい仕事...
私はこれらの2つのアプローチはまったく同じことをしますが。それらの違いは何ですか?私のために何かを実行するMVCエンジンか、URLエンコーディングで何かが恋しいですか?
アクティベートアクションはどのように見えますか?根本的なエラーに関する詳細情報をログに記録する例外はありますか? – chris