我有一个托管在IIS中的WCF服务(继承自WebSocketService)。我正在尝试从我在“OnMessage”中处理的请求中获取cookie。
我试过用: - WebSocketContext.CookieCollection - HttpContext.Current.Request(Current is NULL) - OperationContext.Current.IncomingMessageProperties
他们都没有工作。我可能在web.config文件或其他东西中遗漏了一些东西。我会感激任何帮助。
谢谢
我不完全确定这一点,但启用ASP.NET兼容性:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
</system.serviceModel>
然后检查HttpContext.Current.Request
。
Cookie在HTTP握手中发送,而不是每条消息都发送。
要从握手中获取信息(不启用aspNetCompatability),您应该访问WebSocketContext
:https://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;
从那里您可以访问Headers
或CookieCollection
物业。只要WebSocket处于打开状态,这些属性就会保持不变。