2

ASP.Net と静的な WebMethod / PageMethod を使用して、非同期処理を行います。私の質問は、ここで queryStrings と Session 変数にアクセスする方法ですか?

「HttpContext.Current」を試してみましたが、ここで多くの情報を入手できますが、QueryString も Session も入手できず、理由がわかりません。

 [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
        };
    }
4

4 に答える 4

8

QueryString は Request プロパティにあります。

System.Web.HttpContext.Current.Request.QueryString

しかし、セッションはそこにあります:

System.Web.HttpContext.Current.Session
于 2009-11-19T17:47:33.457 に答える
7

興味深いことに、呼び出しているときに必要な情報を Web メソッドに渡さないのはなぜですか?

于 2009-11-19T17:49:54.417 に答える
0

同様の問題がありました。キャッシュとセッションを管理するために使用していた静的メソッドがいくつかありました。幸いなことに、キャッシュまたはセッションへの参照を次のようにメソッドに渡すことができます。

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

次に、sessn オブジェクトを使用してセッションにアクセスします。

于 2009-11-19T18:08:31.273 に答える
-1

これは返信が遅れていますが、他の人を助け、回答としてマークします..まあ、その Update メソッドを呼び出す方法についてコードを投稿する必要があります。coz私は同じことをしていて、クエリ文字列を取得しています。そのための秘訣は、次のようにgetまたはpost呼び出しとともにそれを渡す必要があることです

$.ajax({ タイプ: "POST", url: "" + getDirectoryPath() + getCurrentPageName() + "/SavePatientEpisodes?ApplicationInstanceID=" + クエリ文字列, データ: JSON.stringify({ : $("#tbPatient1").val(), PatientTwoID: $("#tbPatient2").val() }), contentType: "application/json; charset=utf-8", dataType: "json", 成功: function (msg) { // div のコンテンツを page メソッドの戻り値に置き換えます。 } });

そして、以下のようにアクセスします

_ Public Shared Function SavePatientEpisodes(ByVal PatientOne As List(Of Episode), ByVal PatientTwo As List(Of Episode), ByVal PatientOneID As String, ByVal PatientTwoID As String) As String Dim dd As String = HttpContext.Current.Request.QueryString(" ApplicationInstanceID")

        Dim lang As Integer = toInt(HttpContext.Current.Session("UserID"))

return "" 終了関数

于 2012-12-18T01:33:39.380 に答える