정적 메서드 내에서 세션 변수 값을 가져오려면 어떻게 해야 합니까?
jQuery...에서 ASP.NET 페이지 메서드를 사용하고 있습니다.C#에서 정적 메서드 내의 세션 변수 값을 가져오려면 어떻게 해야 합니까?
protected void Page_Load(object sender, EventArgs e)
{
Session["UserName"] = "Pandiya";
}
[WebMethod]
public static string GetName()
{
string s = Session["UserName"].ToString();
return s;
}
이 파일을 컴파일할 때 다음 오류가 발생합니다.
정적이 아닌 필드, 메서드 또는 속성 'System'에 대한 개체 참조가 필요합니다.웹.UI.페이지.세션.get'
HttpContext.Current.Session["..."]
HttpContext.Current
현재... 음, Http Context를 제공합니다. 여기서 액세스할 수 있습니다.세션, 요청, 응답 등
스레드를 변경하지 않은 경우 다음을 사용할 수 있습니다.HttpContext.Current.Session
jwishart로 표시된 바와 같이.
HttpContext.Current
스레드와 연결된 컨텍스트를 반환합니다.이것은 예를 들어 새 스레드를 시작한 경우에는 사용할 수 없다는 것을 의미합니다.또한 스레드 민첩성을 고려해야 할 수도 있습니다. ASP.NET 요청이 전체 요청에 대해 항상 동일한 스레드에서 실행되는 것은 아닙니다.맥락이 적절하게 전파된다고 생각하지만, 명심해야 할 부분입니다.
사용해 보십시오.
HttpContext.Current.Session["UserName"].ToString();
전류에 액세스할 수 있습니다.Session
via - 사용자가 검색할 수 있는 정적 속성HttpContext
현재 웹 요청에 적용되는 인스턴스입니다.이것은 정적 앱 코드와 정적 페이지 메소드에서 일반적인 패턴입니다.
string s = (string)HttpContext.Current.Session["UserName"];
동일한 기술을 사용하여 액세스합니다.Session
ASMX 웹 메소드 내에서 로 장식된[WebMethod(EnableSession = true)]
왜냐하면 그러한 방법들은 정적이지 않지만 그들은 상속받지 않기 때문입니다.Page
따라서 a에 직접 액세스할 수 없습니다.Session
소유물.
정적 코드는 다음과 같은 방법으로 응용 프로그램 캐시에 액세스할 수 있습니다.
string var1 = (string)HttpContext.Current.Cache["Var1"];
정적 코드가 다른 프로젝트 내에 있는 경우 참조해야 합니다.System.Web.dll
그러나 이 경우 코드가 ASP.NET 컨텍스트 외부에서 호출되는 경우에는 일반적으로 이러한 종속성을 피하는 것이 가장 좋습니다.HttpContext.Current
될 것이다null
명백한 이유로대신, 우리는 요구할 수 있습니다.HttpSessionState
주장으로서 (우리는 여전히 에 대한 참조가 필요할 것입니다.System.Web
물론):
public static class SomeLibraryClass
{
public static string SomeLibraryFunction(HttpSessionState session)
{
...
}
}
통화:
[WebMethod]
public static string GetName()
{
return SomeLibraryClass.SomeLibraryFunction(HttpContext.Current.Session);
}
언급URL : https://stackoverflow.com/questions/2577183/how-can-i-get-the-value-of-a-session-variable-inside-a-static-method
'programing' 카테고리의 다른 글
Git 하위 모듈과의 충돌을 관리하려면 어떻게 해야 합니까? (0) | 2023.06.26 |
---|---|
UICollection뷰 열 수 설정 (0) | 2023.06.26 |
crt0.o와 crt1.o -- 무엇이 다릅니까? (0) | 2023.06.26 |
Github 풀 요청을 통합 diff로 다운로드합니다. (0) | 2023.06.26 |
jQuery를 사용하여 양식 제출 (0) | 2023.06.26 |