Получить переменную Session внутри метода - PullRequest
4 голосов
/ 17 октября 2011
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MySql.Data.MySqlClient;
using MySql.Data;
using System.Web.Security;
using System.Data;
using System.IO;
using SurelyKnown.Core;
using System.Configuration;
using System.Collections;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.Xml;
using System.Windows.Forms;
public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    [System.Web.Services.WebMethod(EnableSession = true)] 
    public static string[] GetCompletionList(string prefixText, int count, string contextKey)
    {
        int newOrgID = Convert.ToInt32(Session["uOrgID"].ToString());

Ошибка в последней строке

 CS0120: An object reference is required for the non-static field, method, or property 'System.Web.UI.Page.Session.get'

Что я должен сделать, чтобы получить значение сеанса внутри метода.

Ответы [ 2 ]

9 голосов
/ 17 октября 2011

Использование HttpContext.Current.Session

int newOrgID=0;
if(HttpContext.Current.Session["uOrgID"]!=null)
{
  int.TryParse(HttpContext.Current.Session["uOrgID"].ToString(),out newOrgID);
}
0 голосов
/ 17 октября 2011

проверить на ноль перед использованием, примерно так:

if(Session["uOrgID"] != null)
{
  int newOrgID = Convert.ToInt32(Session["uOrgID"].ToString());
}

Вам также следует прочитать эту статью, чтобы по-настоящему понять, как получить доступ к состоянию сеанса из веб-служб (включая веб-методы и методы страниц): Использование состояния сеанса ASP.NET в веб-службе

...