WS-AT 是否需要打开客户端防火墙才能与 WCF 配合使用?

发布于 2024-09-18 04:13:11 字数 1568 浏览 2 评论 0原文

我在尝试从 WCF 进行通信时收到以下错误 ->使用 SSL 证书跨越 Internet 的 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 事务呢?假设这是可能的 - 我必须做什么才能允许它?我发现有关必要配置的信息很少 - 即使在我的海量 WCF 编程书中也是如此。


额外奖励:这里为任何尝试让 WS-AT 工作的人提供一些小提示:

  • 如果尝试 安装 WS-AT 选项卡,您无法让它出现 - 并且您运行的是 x64 操作系统 - 请确保您使用的是 安装 WS-AT 选项卡 se/blogs/mikael_sand/archive/2009/08/28/configuring-ws-atomic-transaction-support-in-windows-7-64-bit.aspx" rel="nofollow noreferrer">x64 版本的 RegAsm.exe< /a>: C:\Windows\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe /codebase wsatui.dll
  • 如果安装 WS-AT 后,将其配置为传入连接并重新启动 MCAT,您仍然会收到有关协议被禁用的错误,您可能会遇到忘记重新启动 IIS(!)

I am getting the following error trying to communicate from WCF -> WCF across the internet with a SSL certificate. I have 'No authentication required' checked in the WS-AT configuration on the server.

After a few seconds I'm getting the following message on my client, and trying to figure out what is wrong in my configuration (or understanding of WS-AT).

The flowed transaction could not be
unmarshaled. The following exception
occurred: The WS-AtomicTransaction
protocol service could not unmarshal
the flowed transaction. The following
exception occured: A fault reply with
code CoordinatorRegistrationFailed was
received. The fault reason follows:
The WS-AT protocol service failed to
register with its coordinator. A
connection could not be established.

Looking at the log file on the server I find a link to http://msdn.microsoft.com/en-us/library/aa702582(VS.90).aspx and the following trace message

Microsoft.Transactions.TransactionBridge.RegistrationCoordinatorFailed
Traced if the local TransactionManager is not able to
Register with its superior
TransactionManager due to the
inability to send a message.

So I'm wondering... is the server attempting to communicate with the client through a different channel to the SSL connection originally established by the client. I'm pretty sure thats what it's trying to do for me to end up with this message. The client is my laptop (currently in Starbucks) so there's no chance of any incoming connections.

So is it possible to use WS-AT transactions where only the server has an open firewall? Assuming it is possible - what do i have to do to allow for it? I'm finding very little information about necessary configuration - even in my massive Programming WCF book .


Bonus: Here's a few small tips for anyone trying to get WS-AT working :

  • If when trying to install the WS-AT tab you can't get it to appear - and you're running an x64 operating system - make sure you're using the x64 version of RegAsm.exe:
    C:\Windows\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe /codebase wsatui.dll
  • If once installing WS-AT, configuring it for incoming connections and restarting MCAT you still get errors about the protocol being disabled you may have forgotton to restart IIS(!)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文