繁体   English   中英

ASP.net Web服务

[英]ASP.net web services

我正在使用一个Web服务,该服务在登录时设置Thread.CurrentPrincipal对象,稍后不久,当同一Web服务的另一个Web方法访问Thread.CurrentPrincipal时,其不同/重置

有人可以告诉我这是否是预期的,还是可以从同一客户端进行的不同web方法调用可以访问同一Thread.CurrentPrincipal对象

谢谢

一旦停止使用线程,线程就会回到线程池。

下一个调用将从线程池中获取一个线程,但是您无法控制获得哪个线程。

您需要随每个请求发送有关哪个用户正在进行呼叫的信息。

可以预期,每个新的Web请求实际上都是新线程。 并且每个Web请求都会重置诸如CurrentThread,CurrentCulture之类的东西。

您要执行的是身份验证会话。 有许多可能的解决方案。 但是要提出一些建议,我必须指定您使用的技术。

例如,ASP.NET ASMX服务可以使用表单身份验证。 他们也知道ASP.NET会话。

使用WCF,您可以启用ASP.NET支持,因此您将拥有与ASP.NET ASMX服务相同的东西。 但是您也可以利用Windows Communication Foundation身份验证服务

无论如何都需要您提供更多信息。

如果您对网站使用内置的ASP .NET身份验证,然后仅从网页调用Web服务,则可以通过修饰在Web服务的方法中启用会话变量和用户上下文信息。 像这样:

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

如果那不能解决您的问题,请告诉我们您将Thread.CurrentPrincipal对象用于什么(要从Thread.CurrentPrincipal对象中提取什么)。 也许还有另一种解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM