我有一些验证逻辑,它基于用户的会话.Сan我从继承自AbstractValidator的类访问会话?
或者是否有另一种方法来检查基于RequestDTO的会话?
例如,我可以使用过滤器(我可以通过覆盖的Execute方法中的IRequest参数req访问会话),但我不知道如何从过滤器的类返回响应,绕过操作的主要方法.如果我将抛出异常,该服务将无法正常工作,因为RequestDTO在我的项目之外声明并且它不是从IReturn <>继承而且不包含ResponseStatus字段.
在此先感谢您的帮助(对不起我的英语)
我的客户端 - 服务器应用程序使用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:我可以阻止事件订阅不是授权客户吗?