ServiceStack中对事件订阅者进行身份验证的要求

Vla*_*nov 6 servicestack

我的客户端 - 服务器应用程序使用ServerEventsFeature从服务器向客户端发送命令.在客户端中,我使用ServerEventsClient及其Start方法来订阅事件,但首先我使用ServerEventsClient.ServiceClient及其Send方法将身份验证请求发送到服务器.

如果连接断开,我的客户端还需要不断连接到服务器.为此我使用了我的ServerEventsClient的OnException Action属性,当连接中断时,我在循环中调用Stop方法并再次尝试发送身份验证请求,直到服务器响应.

这一切都运行良好,但如果我重新启动服务器,在客户端有时间发送身份验证请求之前,我会在服务器上看到订阅事件(OnConnect,OnSubscribe等),并且在检查订阅的属性时,我得到像IsAuthenticated这样的奇怪值:False,UserId:-2.然后出现了身份验证请求,并且还有预期的订阅事件,这次,属性值已经预期为IsAuthenticated:True,UserId:46.第一种情况下的SessionId与断开连接之前的值不同,但是验证后不匹配值.在OnConnect事件处理程序中,我尝试检查IsAuthenticated属性并调用对象IEventSubscription的Unsubscribe方法,但之后仍然发生OnSubscribe事件.我有两个问题:

Q1:显然,ServerEventsClient会在分手后自动尝试重新连接.在这种情况下,可能是Stop方法未被触发,因为客户端无法执行取消订阅请求,因为服务器不可用.如何在服务器不可用时停止此过程?

Q2:我可以阻止事件订阅不是授权客户吗?