gpt4 book ai didi

wcf - 调用 WCF Web 服务时清空 HttpContext

转载 作者:行者123 更新时间:2023-12-04 15:38:16 24 4
gpt4 key购买 nike

我最近编写了一个与 Silverlight 一起使用的 web 服务,它使用 ASP.net 成员资格和角色。

为了验证服务中的客户端,我查看了 HTTPContext.Current.User(当从 Silverlight 调用服务时它起作用)

但是,我一直在尝试从 asp.net 回发调用相同的服务。但是当我逐步访问该服务时,HTTPContext.Current 有一个用于用户名的空字符串。

我猜有什么我没有在 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
}

关于wcf - 调用 WCF Web 服务时清空 HttpContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/279469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com