2

ドロップダウン リストのある Web アプリがあります。新しいインデックスが選択されたら、Session_Start イベントで作成されるセッション変数に値を保存する必要があります。

protected void Session_Start(object sender, EventArgs e)
{
    Session.Add("testValue", "test");
}

selectedindex changed イベントで、このように新しい値を設定しています

Session["testValue"] = DropDownList.SelectedItem.Text;

次のようなセッション変数の値を取得する Web サービスがあります。

[WebMethod(EnableSession = true)]
public string getValue()
{

    var testVal = Session["testValue"].ToString();

    return testVal.ToString();
}

コンソール アプリから Web サービスに接続し、 によって返された値を取得しますgetValue()が、常に初期値が返されます。アイデアはありますか?

4

3 に答える 3

1

この問題は、コンソール アプリを実行すると、新しいセッションが作成されたように見えるためです。Application.Set と Application.Get を使用してアプリケーション状態を使用すると、問題が解決しました。システムが複数のユーザーによって使用される場合、問題が発生しないことを願っています。

于 2013-04-08T13:30:05.360 に答える
0

ここでは、値は変更されていません。値は変更されていません。だから何も期待していない

public string getValue()
{
    var testVal = Session["testValue"].ToString();
    return testVal.ToString();
}

間違いはおそらくドロップダウンリストにあります

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
  Session["testValue] = dropdownlist1.SelectedItem.text;
}
}

と、

protected void dropdownlist1_SelectedIndexChanged(object sender, EventArgs e)
{
Session["testvalue"] = dropdownlist1.SelectedItem.text;
}

また、試してみてください

System.Web.HttpContext.Current.Session["testvalue"] 

両方の部分で

于 2013-04-08T12:28:52.473 に答える
0

ドロップダウン リストの項目の値が異なるかどうかを確認します。これは、選択したインデックスの変更イベントが発生するために不可欠です。

于 2013-04-08T12:32:50.330 に答える