我有一个WCF服务(从WebSocketService继承)托管在IIS。我正在尝试从我在"OnMessage"中处理的请求中获取cookie。
我试着使用:
——WebSocketContext。CookieCollection- HttpContext.Current.Request(当前为NULL)——OperationContext.Current.IncomingMessageProperties
它们都不起作用。我可能在网上漏掉了什么。配置文件或其他东西。我很感激你的帮助。
谢谢
我不完全确定这一点,但启用ASP。净相容性:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
</system.serviceModel>
然后检查HttpContext.Current.Request
cookie在HTTP握手中发送,而不是在每条消息中发送。
要从握手中获取信息(不启用aspnetcompatibility),您应该访问WebSocketContext
: https://learn.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;
从那里您可以访问Headers
或CookieCollection
属性。只要WebSocket是打开的,这些属性将保持不变。