Веб-сервисы ASP.net - PullRequest
       19

Веб-сервисы ASP.net

1 голос
/ 10 ноября 2009

Я использую веб-сервис, который устанавливает объект Thread.CurrentPrincipal при входе в систему и вскоре позже, когда другой веб-метод того же веб-сервиса обращается к Thread.CurrentPrincipal, его другой / сбрасывает

Может кто-нибудь сказать мне, ожидается ли это, или различные вызовы веб-метода из одного и того же клиента могут обращаться к одному и тому же объекту Thread.CurrentPrincipal

Спасибо

Ответы [ 3 ]

1 голос
/ 10 ноября 2009

Как только вы перестаете использовать поток, он возвращается в пул потоков.

Следующий вызов заберет поток из пула потоков, но вы не можете контролировать, какой из них вы получите.

Вам необходимо отправить информацию о том, какой пользователь совершает звонок, с каждым запросом.

0 голосов
/ 12 ноября 2009

Если вы используете встроенную проверку подлинности ASP .NET для своего веб-сайта, а затем просто вызываете веб-службу с веб-страницы, вы можете включить переменные сеанса и информацию о контексте пользователя в методах веб-службы с помощью украшение Как это:

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

Если это не решит вашу проблему, сообщите нам, для чего вы используете объект Thread.CurrentPrincipal (что вы извлекаете из объекта Thread.CurrentPrincipal). Возможно, есть другое решение.

0 голосов
/ 10 ноября 2009

Ожидается, что каждый новый веб-запрос фактически новый поток. И каждый веб-запрос сбрасывает такие вещи, как CurrentThread, CurrentCulture и т. Д.

Что вы пытаетесь сделать, это сеанс аутентификации. Есть много возможных решений. Но чтобы предложить что-то, я должен указать технологию, которую вы используете.

Например, службы ASP.NET ASMX могут использовать проверку подлинности с помощью форм. Также им известно о ASP.NET Session.

С WCF вы можете включить поддержку ASP.NET, поэтому у вас будет то же самое, что и для ASP.NET ASMX Services Но вы также можете использовать Службу аутентификации Windows Communication Foundation .

В любом случае вам нужна дополнительная информация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...