在asp.net中发送带有多个查询字符串的URL作为查询字符串参数

时间:2012-12-02 15:20:25

标签: c# asp.net .net c#-4.0

我需要发送一个重定向url作为查询字符串参数, 不幸的是,这个url包含多个查询字符串参数,如下所示

  

“HTTP://主机:端口/ page2.aspx参数1 =值安培; param2的=值安培;参数3 =值”

问题是当我对这个url进行编码并通过querystring发送它时,它看起来好像没有编码,所以我的应用程序认为重定向url参数值只是

  

“HTTP://主机:端口/ page2.aspx参数1 =值”

并考虑

  

“&安培; param2的=值安培;参数3 =值”

作为当前网址的一部分

我试过Server.UrlEncodeServer.HtmlEncode

3 个答案:

答案 0 :(得分:2)

string myUrl = “http://host:port/page2.aspx?param1=value&param2=value&param3=value”;

string EncodedUrl = myUrl.EncodeTo64();

将其作为查询字符串传递并使用以下命令检索:

    EncodedUrl.DecodeFrom64();

功能:

public static string EncodeTo64(this string target)
    {

        byte[] toEncodeAsBytes

              = System.Text.ASCIIEncoding.ASCII.GetBytes(target);

        string returnValue

              = System.Convert.ToBase64String(toEncodeAsBytes);

        return returnValue;

    }

public static string DecodeFrom64(this string target)
    {

        byte[] encodedDataAsBytes

            = System.Convert.FromBase64String(target);

        string returnValue =

           System.Text.ASCIIEncoding.ASCII.GetString(encodedDataAsBytes);

        return returnValue;

    }

答案 1 :(得分:0)

替换'&'在您的网址中使用'%26'或使用Server.UrlEncode

Responsse.redirect("redirectURL?a='http://url2?a=5%26b=7'&b=9'");
 or
Responsse.redirect("redirectURL?a="+Server.UrlEncode("http://url2?a=5&b=7")+"&b=9'");

答案 2 :(得分:0)

对网址进行编码

System.Web.HttpUtility.UrlEncode(string url)