[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Eric Marthinsen

9/26/2006 7:28:00 AM

Hello-

I wrote a HttpModule to inspect the user's current page and to assign a
source a content category to them. The problem is that when it runs, it wipes
out users cookies which logs them out of the site and wipes out their basket.
I can't recreate the error in any sort of test or staging environment, so I'm
at a complete loss as to what might be causing this. Any ideas? Here's the
important bit of my code:

#region IHttpModule Members

public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(OnBeginRequest);
}

public void Dispose()
{
// TODO: Add CategoryManager.Dispose implementation
}

#endregion

private void OnBeginRequest(object sender, EventArgs e)
{
try
{
//get the http application
HttpApplication context = (HttpApplication)sender;

string pageID = GetPageID(context);
string categoryID = GetCategoryID(context);
string source = GetSource(context);

//add the info that can be preserved to the user's cookie
HttpCookie categoryCookie = new HttpCookie("cmCategory", categoryID);
context.Response.Cookies.Add(categoryCookie);

HttpCookie sourceCookie = new HttpCookie("cmSource", source);
context.Response.Cookies.Add(sourceCookie);

//add all values to HttpContext.Items for the actual tags to use
TaggingSession.PageID = pageID;
TaggingSession.CategoryID = string.Format("{0}:{1}", source, categoryID);
//create the composite category with the source and category
}
catch(Exception ex)
{
ExceptionManager.Publish(ex);
}
}

OnBeginRequest calls a few helper functions (GetSource, GetCategory, etc.).
These methods only do reads and inspect the Request.Cookie collection, the
current URL (for querystrings) and an XML file (to look up page IDs). I can
post that as well, if nevessary, but it's a lot of code to go through.

Regards-
Eric
1 Answer

MasterGaurav \(www.edujini-labs.com\)

9/26/2006 5:50:00 PM

0

> //add the info that can be preserved to the user's cookie
> HttpCookie categoryCookie = new HttpCookie("cmCategory", categoryID);
> context.Response.Cookies.Add(categoryCookie);
>
> HttpCookie sourceCookie = new HttpCookie("cmSource", source);
> context.Response.Cookies.Add(sourceCookie);

Strange problem... try tracing the cookies before and after adding.

Have the following code before and after adding the cookies.
btw, have you checked the list of cookies at the client (or the raw response
from the server)?

foreach(HttpCookie cookie in context.Response.Cookies)
{
Trace.Write(...)
}


--
Happy Hacking,
Gaurav Vaish | http://www.master...
http://www.edujini...
http://articles.edujinionline.com/w...
-------------------