WCF WebSocketService读取cookie

问题描述 投票:0回答:2

我有一个托管在IIS中的WCF服务(继承自WebSocketService)。我正在尝试从我在“OnMessage”中处理的请求中获取cookie。

我试过用: - WebSocketContext.CookieCollection - HttpContext.Current.Request(Current is NULL) - OperationContext.Current.IncomingMessageProperties

他们都没有工作。我可能在web.config文件或其他东西中遗漏了一些东西。我会感激任何帮助。

谢谢

wcf cookies websocket
2个回答
1
投票

我不完全确定这一点,但启用ASP.NET兼容性:

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
</system.serviceModel> 

然后检查HttpContext.Current.Request

Cookie在HTTP握手中发送,而不是每条消息都发送。


0
投票

要从握手中获取信息(不启用aspNetCompatability),您应该访问WebSocketContexthttps://docs.microsoft.com/en-us/dotnet/api/system.net.websockets.websocketcontext?view=netframework-4.8

WebSocketContext将包含与初始握手一起发送的所有信息。

例:

var op = OperationContext.Current;
var wsProperties = op.IncomingMessageProperties[WebSocketMessageProperty.Name] as WebSocketMessageProperty;
var wsContext = wsProperties.WebSocketContext;

从那里您可以访问HeadersCookieCollection物业。只要WebSocket处于打开状态,这些属性就会保持不变。

© www.soinside.com 2019 - 2024. All rights reserved.