2009-11-10 6 views
1

난에서 곧 나중에 로그인 상태 Thread.CurrentPrincipal 개체를 설정하는 웹 서비스를 사용하고 동일한 웹 서비스의 또 다른의 WebMethod는 Thread.CurrentPrincipal, 자사의 다른를/액세스ASP.net 웹 서비스

수있는 사람을 재설정 할 때 이 예상되는 경우 말해 또는 당신이 그것을 다시 스레드 풀에가는 실을 사용을 중지와 같은 클라이언트에서 다른에 WebMethod 호출은 즉시 같은 Thread.CurrentPrincipal 개체를

감사

답변

1

에 액세스 할 수 있습니다.

다음 호출은 스레드 풀에서 스레드를 가져 오지만 어떤 스레드를 얻을지는 제어 할 수 없습니다.

각 요청과 함께 어떤 사용자가 전화를 걸 었는지에 대한 정보를 보내야합니다.

+0

응답을 주셔서 감사합니다. 너무 많지 않아서 예제를 제공하거나 보여줌으로써 도움이 될 수 있습니다. –

+0

또는 세션 변수를 사용할 수 있다면 –

0

예상되는대로 새로운 웹 요청이 모두 실제로 새로운 스레드입니다. 그리고 모든 웹 요청은 CurrentThread, CurrentCulture 등과 같은 것들을 재설정합니다.

인증 세션이 무엇을하려고합니까? 가능한 많은 솔루션이 있습니다. 그러나 뭔가를 제안하기 위해 당신이 사용하는 기술을 명시해야합니다.

예를 들어, ASP.NET ASMX 서비스는 폼 인증을 사용할 수 있습니다. 또한 그들은 ASP.NET 세션에 대해 알고 있습니다.

WCF를 사용하면 ASP.NET 지원을 활성화 할 수 있으므로 ASP.NET ASMX Services와 같은 기능을 사용할 수 있습니다. 그러나 Windows Communication Foundation Authentication Service을 활용할 수도 있습니다.

어쨌든 더 많은 정보가 필요합니다.

+0

현재 Windows 양식 응용 프로그램을 사용하고 있습니다. 다양한 작업을 위해 웹 서비스를 사용합니다. Shiraz의 의견에 따르면 각 요청마다 사용자 이름/비밀번호를 허용하는 API와 유사한 모든 메소드를 구현해야한다고 가정합니다. 또는 해결 방법을 읽어 보니 기꺼이 –

+0

웹 서비스 = this is asymx service? 또는 WCF 서비스? –

+0

예 asp.net asmx 서비스를 언급했습니다. –

0

웹 사이트에 기본 제공 ASP .NET 인증을 사용하고 웹 페이지에서 웹 서비스를 호출하는 경우 웹 서비스의 메서드에서 세션 변수와 사용자 컨텍스트 정보를 사용하도록 설정할 수 있습니다 장식으로. 이처럼 :

[WebMethod(EnableSession=true)] 
public void MyWebMethod() 
{ 
    string mySessionVar = HttpContext.Current.Session["sessionVar"].ToString(); 
    IPrincipal currentUser = HttpContext.Current.User; 
    ... 
} 

그 문제가 해결되지 않으면, 당신이 (당신이 Thread.CurrentPrincipal 개체의 철수 무엇)의 Thread.CurrentPrincipal 개체를 사용하고있는 사항을 알려주십시오. 아마도 또 다른 해결책이있을 것입니다.