我在尝试使用 SSL 证书通过 Internet 从 WCF -> WCF 进行通信时遇到以下错误。我在服务器上的 WS-AT 配置中检查了“不需要身份验证”。
几秒钟后,我在客户端上收到以下消息,并试图找出我的配置(或对 WS-AT 的理解)有什么问题。
无法解组流式事务。发生以下异常: WS-AtomicTransaction 协议服务无法解组流事务。发生以下异常:收到代码为 CoordinatorRegistrationFailed 的故障回复。故障原因如下: WS-AT 协议服务向其协调器注册失败。连接不能建立。
查看服务器上的日志文件,我找到了指向http://msdn.microsoft.com/en-us/library/aa702582(VS.90).aspx的链接和以下跟踪消息
Microsoft.Transactions.TransactionBridge.RegistrationCoordinatorFailed 如果本地 TransactionManager 由于无法发送消息而无法向其上级 TransactionManager 注册,则跟踪。
所以我想知道......服务器是否试图通过与客户端最初建立的 SSL 连接不同的通道与客户端通信。我很确定这就是它试图让我最终收到这条消息的原因。客户端是我的笔记本电脑(目前在星巴克),所以没有任何传入连接的机会。
那么是否可以在只有服务器具有开放防火墙的情况下使用 WS-AT 事务?假设这是可能的 - 我必须做些什么才能允许它?我发现关于必要配置的信息非常少——即使在我庞大的 Programming WCF 书中也是如此。
奖励:对于任何试图让 WS-AT 工作的人来说,这里有一些小技巧:
- 如果在尝试安装 WS-AT 选项卡时无法显示它 - 并且您正在运行 x64 操作系统 - 请确保您使用的是x64 版本的 RegAsm.exe:C:\Windows\Microsoft。 NET\Framework64\v2.0.50727\RegAsm.exe /codebase wsatui.dll
- 如果一旦安装 WS-AT,为传入连接配置它并重新启动 MCAT,您仍然会收到有关协议被禁用的错误,您可能忘记重新启动 IIS(!)