问题标签 [wsdualhttpbinding]
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.
uwp - 错误 CS0433 类型“InstanceContext”同时存在于“System.ServiceModel.Duplex, Version=4.0.1.2,”和“System.ServiceModel, Version=4.0.0.0”中
在uwp中添加双工通信的wcf服务,我需要WSDualHttpBinding类。但是 UWP 框架将涉及 system.servicemodel.primitives。当我添加 system.servicemodel 时,错误 CS0433 类型“InstanceContext”同时存在于“System.ServiceModel.Duplex, Version=4.0.1.2,”和“System.ServiceModel, Version=4.0.0.0”中
我需要的是参考 ystem.ServiceModel, Version=4.0.0.0 怎么做
c# - 使用 WSDualHttpBinding 在 WCF 服务之间共享 Windows 标识
我在 IIS 7 中分别托管了两个 WCF 服务。第一个服务可从外部调用,并使用WebHttpBinding
Windows 身份验证。第二个服务仅由第一个服务调用,使用WsDualHttpBinding
.
当第一个服务被调用时,我可以从ServiceSecurityContext.Current.WindowsIdentity.Name
. 在第二项服务中,这不起作用,ServiceSecurityContext.Current.WindowsIdentity.Name
只是IIS APPPOOL\DefaultAppPool
.
我将其配置WsDualHttpBinding
为使用 Windows 身份验证,但这没有帮助。这是服务器端配置:
这是第一个服务中与第二个服务建立通信的代码:
如何配置第一个服务以将用户的身份传递给第二个服务?
c# - WCF双绑定回调通道问题:通道故障
我遇到了客户端无法在第二次启动时注册回调通道的问题。我尝试了各种方法,似乎找到了在关闭服务时删除 Close() 通道(包装器中的 ResetProxy() 调用)调用的解决方案。但事实证明这会导致另一个问题:服务器崩溃并出现错误“线程试图读取或写入它没有适当访问权限的虚拟地址”. 此外,还有一些与网络相关的问题也会导致相同的行为。解决方案始终是重新启动服务器,这不是修复回调通道注册的正确选项。谁能建议可能是什么问题?我做了很多测试,这似乎与所有客户端的突然停止(多个服务的全局停止)和服务数量有关。结果,即使是新客户端也无法在服务器重新启动之前注册到服务器。这听起来像服务器正在阻止关闭的频道。
合同:
客户端创建回调代码(截断):
客户端回调代码(截断):
所有这些都包装到代理包装器中,带有重置功能,在服务停止或任何错误(包括网络)时调用:
服务器只维护回调列表。
- 为“AgentManagerProxy”创建代理
- 调用 BuildProxy()
- mProxy.Open() [状态=已创建]
- 调用 SubscribeToChannelEvents()
- …………………………………………………………………………
- 服务停止...
- 调用 ResetProxy()
- 调用 UnSubscribeFromChannelEvents()
- 调用 CloseProxy(): mProxy.Close()
- 调用 CloseProxy(): mProxy.ChannelFactory.Close()
为客户端添加的日志记录在第一次启动时显示:
第二次启动服务失败:
- 为“AgentManagerProxy”创建代理
- 调用 BuildProxy()
- mProxy.Open() [状态=已创建]
错误: 由于 System.TimeoutException 没有代理:请求通道在 00:00:00 之后尝试发送超时。增加传递给 Request 调用的超时值或增加 Binding 上的 SendTimeout 值。分配给此操作的时间可能是较长超时的一部分。---> System.TimeoutException: 对' http://xxxxx:9003/AgentManager的 HTTP 请求' 已超过分配的超时时间 00:00:00。分配给此操作的时间可能是较长超时的一部分。在 System.ServiceModel.Channels.HttpChannelUtilities.SetRequestTimeout(HttpWebRequest 请求,TimeSpan 超时)在 System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.SendRequest(消息消息,TimeSpan 超时)在 System.ServiceModel.Channels.RequestChannel.Request (消息消息,TimeSpan 超时) --- 内部异常堆栈跟踪结束 ---