URLエンコーディングを広範囲に使用するWebストアを構築しています。処理前にURLのエンコーディングが失われる - ASP.net
私はリンクを生成するために私のデータベース内に部門&のカテゴリを持っています。これらはもちろん、送信前にURLエンコードされています。
いくつかの典型的なリンクがある...
/MySite/Store/Countertop+Equipment/Can+Openers.aspx
/MySite/Store/Dinnerware.aspx /個人用サイト/通販/キッチン/ペーストリー%2f + Decorating.aspx
私のHTTPHandlerでは、現在のパスを取得するためにapp.Request.Pathを呼び出します。この呼び出しによって返された文字列はURLエンコードされなくなり、正しく解析できなくなります。 URLエンコーディングは
/MySite/Store/Kitchen/Pastry%2f+Decorating.aspx失わ
/MySite/Store/Kitchen/Pastry/Decorating.aspxなりしたら。
これは明らかに、URLをQueryStringに変換するメソッドを破っています。
誰でもこの問題を解決する方法を知っていますか?ここで
は、私は本当にあなたの助けに感謝し、私HTTPHandlerの
public void Init(System.Web.HttpApplication app)
{
app.BeginRequest += new EventHandler(Application_BeginRequest);
}
private void Application_BeginRequest(object sender, EventArgs e)
{
System.Web.HttpApplication app = (System.Web.HttpApplication)sender;
string realUrl = GetRealUrl(app.Request.Path);
if (!String.IsNullOrEmpty(realUrl))
app.Context.RewritePath(realUrl, false);
}
の中核です!
なしでのフォローアップの質問ですやる私は必要なもの...復号化はIISのレベルで発生している可能性があることが表示されます以前は.netでもリクエストに手をつけています。私は "〜"がこれを確認するように思われるエンコードされた/文字で正しいパスをレンダリングしていない別の投稿を持っていました。私は、URLEncodingのポイントが、アプリケーションに到達する前にサーバーが自分のURLを持っているかどうかわかりません。 –