1

次のコードがあります。

     if (Request.Url.AbsolutePath == "/Guidance.aspx")
        {
            if (Request.IsSecureConnection)
            {
              Reponse.Redirect("http://www.example.com/Guidance.aspx");
            }
            return;
        }

問題は、Guidance にクエリ文字列を含めることができることです。次に、同じページ名にリダイレクトしてクエリ文字列を追加するのが好きです。これを行う方法が見つかりませんでした。

     if (Request.Url.AbsolutePath == "/Guidance.aspx?id='vid09'")
        {
            if (Request.IsSecureConnection)
            {
              Reponse.Redirect("http://www.example.com/Guidance.aspx?id='vid09'");
            }
            return;
        }

上記のコードを単純化して、任意のクエリ文字列でそれを行うにはどうすればよいでしょうか。

4

3 に答える 3

3

UriBuilderを使用して、必要な部分を置き換えます。何かのようなもの:

var builder = new UriBuilder(Request.Url);
builder.Scheme = "http";
Reponse.Redirect(builder.ToString);
于 2013-10-04T16:25:30.103 に答える
0

空想しないでください。URI は既に解析されています (信頼できない正規表現で自分で解析しないでください)。使用している Url プロパティはSystem.Uriオブジェクトです。スキーム、ホスト、および必要な HTTP セグメントを単純に比較し、元の URI からクエリ文字列コンポーネントのみを追加して、リダイレクト URI を構築できます。必要なのはUriクラスだけです。

于 2013-10-04T16:30:36.083 に答える
0
string myUrl = Request.RawUrl.toString();
if (myUrl.Contains("/Guidance.aspx")
    {
        if (Request.IsSecureConnection)
        {
          var queryString = myUrl.Substring(myUrl.IndexOf("?"));
          Reponse.Redirect("http://www.example.com/Guidance.aspx" + queryString);
        }
        return;
    }
于 2013-10-04T16:28:01.997 に答える