Hi,
As everyone said, 90000 chars is huge. Check if that is required functionally. If you still need to pass 90,000 character to the page, it can be achieved by many ways.
1) Try if you can put them in the hidden field and do a post back to get it back on the server side.
2) This can be sorted by using HTTPHandler to transfer the huge amount of data to your server side to store it on session and on the page level accessing it from the session. If you have multiple pages where you will have this problem, we can write a base page and we can use Rewrite method of page querystring so that target pages will not need much code change.
If you feel like going for any one of this solution, let me know, I will provide you the completed detailed information
More information in Implementing Solution 2: Using HttpHandler and HttpModule.
This solution will just need two entries to be configured in Web.config and little of Javascript change.
Step1: Create a HTTPHandler as given below.
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.SessionState;
namespace QueryStringHelper
{
public class QueryStringHander : IHttpHandler, IRequiresSessionState
{
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
string sKey = System.Guid.NewGuid().ToString();
string sVal = context.Request["QryStr"];
sVal = System.Web.HttpUtility.HtmlDecode(sVal);
context.Session.Add(sKey, sVal);
context.Response.Clear();
context.Response.Write(sKey);
context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
}
}
}
Step 2: Create a HTTPModule
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.SessionState;
namespace QueryStringHelper
{
public class QueryStringModule : IHttpModule
{
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.PostAcquireRequestState += new EventHandler(context_PostAcquireRequestState);
}
void context_PostAcquireRequestState(object sender, EventArgs e)
{
HttpApplication app = sender as HttpApplication;
if (!string.IsNullOrEmpty(app.Context.Request["AutoQry"]))
{
app.Context.RewritePath(app.Context.Request.Path + "?" + app.Context.Session[app.Context.Request.QueryString["AutoQry"]]);
}
}
}
}
Step3: Write a Javascript function
function GetQueryString(str) {
if (str) {
if (str.length > 1600) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "SaveQueryString.axd", false);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", str.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.send("QryStr=" + escape(str));
if (xmlhttp.responseText) {
str = "AutoQry=" + xmlhttp.responseText;
}
}
}
return str;
}
Step 4: Your Logic goes here. Assigning Query string to a Page. In this example I am assigning it to an iFrame src.
var qry = "QryStr=Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string..Some text to be passed as a query string.&Q2=SecondQueryString";
qry = GetQueryString(qry);
document.getElementById('frm1').src = "WebForm1.aspx?" + qry;
qry = "MyQry=Simple Query";
qry = GetQueryString(qry);
document.getElementById("Iframe1").src = "WebForm2.aspx?" + qry;
Step 5: Configure Web.config to include the HTTPHandler and HttpModule Created.
="1.0"
<configuration>
<appSettings />
<connectionStrings />
<system.web>
<compilation debug="true">
</compilation>
<authentication mode="Windows" />
<httpModules>
<add name="QueryStringModule" type="QueryStringHelper.QueryStringModule, QueryStringHelper"/>
</httpModules>
<httpHandlers>
<add path="SaveQueryString.axd" verb="*" type="QueryStringHelper.QueryStringHander, QueryStringHelper"/>
</httpHandlers>
</system.web>
</configuration>
Here "QueryStringHelper" is the Assembly where I have created the HTTPModule and HTTPHandler. Please change the names accordingly.
On implementing this, you don't require any code change in your ASPX page. You will receive the values passed as query string from client side as usual in the QueryString propery on the Server side.
This is an simple solution with the help of URLRewritting , HTTPHandler and HTTPModule.
Thanks,
Balaji Prabu