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 回答