问题标签 [wcf-sessions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ajax - 为什么使用 wsHttpBinding 时 InstanceContextMode.PerSession 的行为类似于 PerCall?
我有 AJAX 客户端使用 SOAP 1.2 使用的 WCF 服务
网络配置:
根据我的阅读,我必须使用,<security mode="None"/>
因为通过“wsHttpBinding”绑定公开的服务实现了 WS-* 系列 Web 服务规范的 WS-Security。由于绑定使用安全性,因此请求将被拒绝,因为 AJAX 不支持安全上下文。
我的 WCF 服务行为定义为InstanceContextMode.PerSession
:
但是当我使用它时,服务表现为 PerCall 并且每次调用都会启动一个新的 WCF 实例,而不是使用当前实例。
为什么使用 wsHttpBinding 时 InstanceContextMode.PerSession 的行为类似于 PerCall?
我能做些什么?
wcf - WCF 会话并不特定于特定用户
WCF 函数
代理
我的问题是当多个客户端访问该服务时,每个客户端都访问最后设置的会话。会话不是基于浏览器请求并且不识别客户端。哪个客户端发送了哪个请求。我应该怎么做才能使它们特定于每个客户。意味着每个客户都必须有自己的会话。
请帮忙
wcf - 什么时候在 WCF 中使用“允许”作为 SessionMode?
你能给我一个在 WCF 服务合同中使用“允许”作为 SessionMode 值的场景吗?
c# - WCF - 确定会话何时在服务器端结束
在我正在进行的项目中,我们有几个使用WCF
. 我面临的情况是某些服务需要知道会话何时结束,以便它可以适当地更新该客户端的状态。当客户端正常终止时通知服务(例如用户关闭应用程序)很容易,但是,在某些情况下应用程序可能会崩溃,或者客户端计算机可能会重新启动,在这种情况下客户端将无法通知服务关于它的状态。
最初,我正在考虑在服务器端设置一个计时器,它会在客户端连接后触发,并在例如 1 分钟后将该客户端的状态更改为“已终止”。现在客户端每 30 秒将其状态发送给服务,并且服务基本上会在客户端的每个请求上重新启动其计时器,这意味着它(希望)永远不会改变客户端的状态,只要客户端还活着。
尽管这种方法非常可靠(不完全可靠;如果客户端发送其状态的时间超过 1 分钟怎么办?)它仍然不是解决此问题的最佳方法。请注意,由于系统的原始设计,我无法实现双工服务,这可能会使事情变得更简单。所以我的问题是:有没有办法让服务知道会话何时结束(即连接超时或客户端关闭代理)?我遇到了这个问题:WCF:如何找出会话何时结束,但答案上的链接似乎已损坏。
我担心的另一件事是;他们目前正在创建我的频道代理的方式是这样实现的:
因此,在进行服务调用后立即关闭通道(因为它在一个using
块中),从服务的角度来看,这是否表明会话已终止?如果是这样,我是否应该在应用程序运行时只保留每个服务的一个实例,也许可以使用单例?如果问题看起来有点模糊,我深表歉意,我认为会有很多这样的问题,但无法找到类似的问题。
c# - 会话不使用消息安全或传输安全
我正在尝试设置一个 WCF 服务,该服务应该能够与 Linux 机器上的客户端进行通信。该服务应该能够支持会话,以便我可以跟踪客户端,因为我们正在维护每个客户端的状态。
由于客户端将来自托管服务的网络以外的网络,因此我使用自定义 UserNamePasswordValidator 和 ServiceAuthorization 管理器对客户端进行身份验证。
如果我使用 Security.Message.ClientCredentialType = MessageCredentialType.Windows,我可以从 Windows 机器连接到我的服务,并建立 WCF 会话。直到这里一切正常。
然而,正如我在开始时所说,我需要让它与从 Linux 连接的客户端一起工作,我尝试使用 SecurityMode.TransportWithMessageCredential 和 SecurityMode.Message。WCF 要求我使用证书加密通信,我这样做了。但是我无法让会话正常工作。对于来自客户端的每次调用,ServiceSecurityContext.Current.AuthorizationContext.Id 都会更改。
任何人都可以指出应该在以下代码中进行哪些更改以使其在不使用 MessageCredentialType.Windows 的情况下与 WCF 会话一起工作?
底线是,如果我使用 SecurityMode.TransportWithMessageCredential 或 SecurityMode.Message,WCF 会话将不起作用。
wcf - WCF 服务中的会话变量
我只是在创建一个普通的 wcf 服务,它获取 Person 对象并返回 List。我需要将传入的 Person 对象保存在会话中并返回列表。我已经实现了如下代码
但总是我只得到我在参数中传递的对象。不是整个系列。所以会话总是返回null。我错过了什么?
wcf - 在 WCF 的单实例上下文模式下,不同客户端的会话 ID 是否相同
在 WCF 的单实例上下文模式下,不同客户端的会话 ID 是否相同?
请详细说明。
wcf - 使 WCF 调用 ClaimsAuthenticationManager.Authenticate 每个会话只调用一次
我为我的 wcf 服务设置了一个自定义 ClaimsAuthenticationManager。现在我发现每个 wcf 调用都会执行 ClaimsAuthenticationManager.Authenticate 方法。相反,我希望每个会话执行一次,以避免不必要的开销。
据微软称:
声明身份验证管理器通常在每个会话中调用一次,但以下情况除外:对于传输安全性,存在于传输层的令牌将在每次调用时调用一次声明身份验证,即使存在会话也是如此。
来源:https ://msdn.microsoft.com/en-us/library/ee748487.aspx
由于我的自定义绑定不使用传输安全性,我看不出为什么每次调用都会执行 ClaimsAuthenticationManager.Authenticate。
有谁知道是否需要满足进一步的要求才能让这个方法在每个会话中调用一次?非常感谢您的任何建议。
wcf 绑定配置:
c# - WCF自己的EndpointBehavior读取客户端Session
我有一个实现方法的IClientMessageInspector
接口BeforeSendRequest()
。在这种方法中,我想检索Session
客户端中设置的对象。就像是。
我想我需要一些与这个问题非常相似的东西。
c# - WCF netTCPBinding 的不可预测行为
我正在实现 WCF netTCPBinding 并在运行与数据库相关的任务时遇到问题。例外是“System.Net.Sockets.SocketException:'现有连接被远程主机强制关闭'在 net tcp 绑定中”。但是,行为是不可预测的,有时它不会给出异常并且运行平稳,有时它会给出异常。
我添加了服务限制,为读取器配额和缓冲区大小分配了最大值,但对我没有任何作用。但是,我无法将最大连接值从 10 增加到其他值,因为它给出了异常。我尝试了一切,但没有任何效果。
网络配置
应用程序配置
请帮助我从星期一就被困在这里。
注 1: 该应用程序在 Visual Studio 调试模式下运行良好。但是,问题发生在发布模式或我在客户端计算机上安装应用程序时。