2

HttpContext に保存するアイテムがあります。

HttpContext.Current.Items["myItem"] = "123";

ページのどのメソッドからでも問題なくアクセスできます。例えば:

protected override void OnLoad(EventArgs e)
{
    string l_myItemVal = HttpContext.Current.Items["myItem"] as string; // "123"
}

これはうまくいきます。

ただし、AJAX を介してページの Web メソッドの 1 つを呼び出すと、これは失敗します。

[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static string MyWebMethod()
{
    string l_myItemVal = HttpContext.Current.Items["myItem"] as string; // NULL
}

非同期呼び出しの HttpContext は、ページの HttpContext とは異なりますか?

4

2 に答える 2

4

HttpContext.Itemsは、単一のリクエスト中にのみアイテムを保持します。AJAXリクエストは2番目のリクエストであり、独自のItemsプロパティがあります。

于 2010-02-10T18:54:12.067 に答える
-1

これを機能させるには、セッション状態を有効にする必要があるかもしれません。

[System.Web.Services.WebMethod(true)]
于 2010-02-10T18:42:17.167 に答える