次のURLを使用する必要があります。
http://example.org/sessionstuff/kees/view.aspx?contentid=4&itemid=5
次のように書き直す必要があります。
http://example.org/sessionstuff/view.aspx?site=kees&contentid=4&itemid=5
基本的にはkees
値を取り、それをsite
パラメータとして置きます。web.configのルールを使用するIISURLRewriteモジュールを使用しています。web.configに次のコードを追加しました。
<rule name="RedirectSite" stopProcessing="true">
<match url="^(\D[^/]*)/(.*)$" />
<action type="Rewrite" url="{R:2}?site={R:1}" />
</rule>
すべて正常に動作しますが、ポストバックを実行すると、site
パラメーターが2倍になります。.aspxページで次のコードを使用してこれをテストしました。
<h3>Querystring</h3>
<ul>
<% foreach (string key in Request.QueryString.Keys)
Response.Write(String.Format("<li><label>{0}:</label>{1}</li>", key, Request.QueryString[key])); %>
</ul>
<asp:Button runat="server" Text="Postback" />
初めて
Querystring
site: kees
contentid: 4
itemid: 5
2回目
Querystring
site: kees, kees <--- double
contentid: 4
itemid: 5
site
パラメータがそれ自体を複製するのを防ぐ方法は?各ポストバックは別の値を追加します。
注:他のクエリパラメータが存在する必要があるため、使用することappendQueryString="false"
はできません。