URLエンコードを多用するウェブストアを構築しています。
私のデータベースには、リンクの生成に使用する部門とカテゴリのリストがあります。もちろん、これらは送信前にURLエンコードされます。
いくつかの典型的なリンクは...
/
MySite/Store/Countertop+Equipment/Can+Openers.aspx/MySite/Store/Dinnerware.aspx
/MySite/Store/Kitchen/Pastry%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);
}
私は本当にあなたの助けに感謝します!