views:

682

answers:

3

Hi guys,

I use ASP.Net and a static WebMethod / PageMethod to do some async work. My question is how to access my queryStrings and Session variables here?

I tried "HttpContext.Current" and a lot of information is available here, but not my QueryString nor my Session and I don't know why.

 [WebMethod(EnableSession=true)]
    public static object Update(string time)
    {
        string timer;
        string lastBidder;
        string price;

        //Countdown timer
        DateTime dt = DateTime.Parse(time);
        dt = dt.AddSeconds(-1.0);
        timer = dt.ToString("HH:mm:ss");

        int auctionID = 6;
        if (!int.TryParse(HttpContext.Current.Request.QueryString["id"], out auctionID))
            throw new Exception("Seitenaufruf ohne ID");

        Business.AuctionHandling ah = new Business.AuctionHandling();
        DAL.Auktion auktion = ah.GetSingleAuction(auctionID);

        price = auktion.AktuellerPreis.ToString("###0.00");

        //this.gvHistory.DataBind();

        List<DAL.Biethistorie> his = ah.GetBidHistoryForAuction(auctionID);
        if (his.Count > 0)
        {
            lastBidder = his[0].Benutzer.Benutzername;
            //History fett
            //gvHistory.Rows[0].Font.Bold = true;
            //gvHistory.Rows[0].ForeColor = System.Drawing.ColorTranslator.FromHtml("#3B4D5F");
            //lblHöchstesGebot.ForeColor = System.Drawing.Color.Black;
        }
        else
        {
            lastBidder = Helper.StringHelper.AuctionDeatil_NoBidder;
            //lblHöchstesGebot.ForeColor = System.Drawing.Color.Red;
        }

        return new
        {
            valueTimer = timer,
            valuePrice = price,
            valueLastBidder = lastBidder
        };
    }
+1  A: 

The QueryString is in the Request property.

System.Web.HttpContext.Current.Request.QueryString

But the Session is in there:

System.Web.HttpContext.Current.Session
Yuriy Faktorovich
Both don't work here!
Kovu
+2  A: 

Out of interest why aren't you just passing the information you need to the web method as you are calling it?

Michael Ciba
I agree, this will also make it easier to unit test the static methods, but shouldn't this still be a comment?
Yuriy Faktorovich
I don't care about the moment for unit tests. So you mean access the session and query string in javascript and pass it in the variable?
Kovu
A: 

I had a similar problem. I had a number of static methods I was using to help manage my Cache and Session. Luckily, you can pass a reference to the Cache or Session into your moethods like this:

public static void DoSomething(System.Web.SessionState sessn)

And then access your session by using the sessn object.

Sonny Boy
How I can get a sessionstate object from javascript
Kovu
Sorry.. I'm not too sure about that one. Session is usually handled by the server. Maybe include it into a hidden field as JSON or something? That might be a good topic few a new question and someone with more javascript experience than I can tackle it.
Sonny Boy