加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

调用WCF webservice时清空HttpContext

发布时间:2020-12-16 21:37:25 所属栏目:安全 来源:网络整理
导读:我最近编写了一个与Silverlight一起使用的Web服务,它使用ASP.net成员资格和角色. 要验证服务中的客户端,我查看HTTPContext.Current.User(当从Silverlight调用服务时,它可以工作) 但是,我一直试图从asp.net回发中调用相同的服务.但是,当我逐步访问服务时,HTTP
我最近编写了一个与Silverlight一起使用的Web服务,它使用ASP.net成员资格和角色.

要验证服务中的客户端,我查看HTTPContext.Current.User(当从Silverlight调用服务时,它可以工作)

但是,我一直试图从asp.net回发中调用相同的服务.但是,当我逐步访问服务时,HTTPContext.Current有一个用户名的emplty字符串.

我猜我有没有在web.config文件中做的事情导致httpContext没有通过代理发送到我的服务?

任何想法,将不胜感激.我需要能够以某种方式验证客户端使用asp.net成员资格和角色,并让它从asp.net客户端和Silverlight客户端工作.

解决方法

我解决了!

默认情况下,Silverlight应用程序将所有浏览器cookie发送到服务.其中一个cookie是“.ASPXAUTH”cookie,用于对成员资格和角色进行身份验证.

然而,asp.net应用程序没有将cookie发送到服务.要发送授权cookie,我在调用webservice方法之前使用了以下代码.

using (OperationContextScope scope = new OperationContextScope(ws.InnerChannel))
    {
HttpRequestMessageProperty httpRequest = new HttpRequestMessageProperty();
OperationContext.Current.OutgoingMessageProperties.Add(HttpRequestMessageProperty.Name,httpRequest);

            HttpCookieCollection cc = Page.Request.Cookies;
            if (Request.Cookies[".ASPXAUTH"] != null)
            {
                HttpCookie aCookie = Request.Cookies[".ASPXAUTH"];
                String authcookieValue = Server.HtmlEncode(aCookie.Value);
                httpRequest.Headers.Add("Cookie: " + ".ASPXAUTH=" + authcookieValue);

            }
// Webservice call goes here
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读