问题标签 [isoneway]

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.

0 投票
1 回答
906 浏览

asp.net - 如何调用 IsOneWay WCF 服务并正确关闭客户端

我对 WCF 很陌生,我已经设置了一个测试网站和服务。我正在尝试两个完成两件事:

  1. 在不阻塞用户的情况下调用服务
  2. 正确关闭客户端

我创建了一个 web 服务并给它 isoneway 属性。我设法在不阻止用户的情况下调用它,但我担心我没有关闭客户端。如何在不阻止用户的情况下调用此服务并仍然正确关闭客户端?我应该使用异步方法(TestServiceAsync)吗?我应该使用 BeginXX、EndXX 方法吗?

客户:

网络服务:

网络配置:

0 投票
1 回答
813 浏览

c# - 当 IsOneWay = true 时,HttpContext.Current.User 为空

我有 wcf 服务。有些是一种方式,有些不是。那些不是使用表单身份验证的一种方式,我得到 HttpContext.Current.User。那些是一种方式在 HttpContext.Current.User 中获得空值。

怎么修?

我正在使用 ASP.NET 兼容模式

0 投票
2 回答
575 浏览

.net - 如何找出当前方法是否被 IsOneWay 标记

有没有办法知道当前正在执行的 WCF 方法是否是 OneWay 方法?

我正在使用 httpBinding,问题与服务器端有关。

我在 MSDN 上的 OperationContext 属性中搜索并找不到它。

编辑

在 OneWay 调用的情况下,状态码将为 202,但这不是一个好方法。

有没有更好的方法?

0 投票
0 回答
62 浏览

wcf - 将方法声明为调用方的 AsyncPattern 和实现方的 OneWay 可能会产生什么后果

我有一项执行以下合同的服务:

为了避免在调用方停止(延迟很高时需要几秒钟),我想将合同更改为异步模式:


问题:由于生产限制,我将无法升级实施端。

我运行它,发现一切都按预期运行,只是只有在通道关闭时才调用结束回调。


问题是:我会遇到任何性能问题、内存泄漏或其他我没有想到的问题吗?

0 投票
2 回答
301 浏览

c# - 使用 C# 线程模拟 Fire & Forget 场景

我有一个网络服务,它需要很多时间来执行。我计划将处理任务委托给后台线程并立即将确认响应返回给用户。

在这种情况下,我担心后台线程的生命周期。
后台线程会在主方法/线程完成执行之前完成委托任务吗?

0 投票
1 回答
132 浏览

wcf - 如何使用 Fitnesse 测试 OneWay WCF 操作

在我们当前的应用程序中,我们正在尝试使用 WCF netMSMQBinding,它需要将 Operation Contract 标记为 One Way。

我们也在尝试使用 Fitnesse 作为我们的测试引擎,在我们的测试用例中,我们需要对场景进行端到端的测试,这意味着我们不能使用 One Way Operations,因为它们会在消息放入后立即返回queue 和 Fitnesse 将尝试断言结果,但实际消息可能尚未处理,也可能尚未处理。因此,如果我们使用单向操作,那么我们需要以某种方式等待它的执行完成。

方法尝试/研究..

  1. 通过读取配置在托管时更改 OperationDescription,以便在 Fitnesse IsOneWay 中托管时为 False,但在生产中 IsOneWay 为 True,然后用户 MSMQ 绑定仅在生产和测试中使用 tcp 或 netnamedpipe。

    我们尝试在打开服务之前创建自定义 ServiceHost 并更改 OperationDescription,但在 OperationDescription 类中 IsOneWay 是只读属性,通过查看 .Net Framework 代码,它返回消息计数。在我看来,我必须重写 Service Host 的 CreateDescription 操作并且必须提供自定义实现。它似乎

  2. 在 Fitnesse 中创建一个 Monitor Fixture,它会以某种方式等待消息被处理。

    方法 1:创建存储 MessageId 和已完成状态的自定义数据库表,并在每个消息处理结束时输入该表中的记录。所以现在fitnesse fixture可以轮询表并等待执行完成。

    方法 2:以某种方式轮询 MSMQ 并知道何时处理消息。我们仍在重新研究如何使其发挥作用。

请就当前方法或任何新方法提出任何建议。

0 投票
0 回答
547 浏览

c# - 使用netTcpBinding的单向WCF调用:通过配置添加OneWayBindingElement

我想实现从 ASP.NET 应用程序到 WCF 服务(托管在 Windows 服务中)的单向、即发即弃的调用。这是服务端的一个长时间运行的操作(否则我只会在 ASP.NET 应用程序中执行此操作),因此客户端(通道)在操作完成之前不应保持打开状态

无论这看起来多么微不足道,我一直在寻找一个优雅的解决方案几个小时,却找不到任何我喜欢的东西。有几个关于它的问题和博客文章,似乎有两种可能的解决方案:

  1. 如此处所建议的,使用消息队列作为通信层。
  2. 按照这里OneWayBindingElement的建议使用。

我宁愿不使用消息队列,在服务器环境中安装这些开销太大。

剩下的就是添加OneWayBindingElement。但是我发现的所有示例都在代码中执行此操作,我不想这样做,因为这排除了使用 Visual Studio WcfSvcHost 的可能性。是否可以通过配置扩展我的 netTcpBinding OneWayBindingElement

为了完整起见,以下是我的代码中的关键部分:

服务接口

服务实施

客户端代码,在控制器内部

服务配置

0 投票
1 回答
518 浏览

c# - 我是否需要从立即退出的控制台关闭与 WCF 服务的连接?

我有一个控制台应用程序,我想对 WCF 服务进行“即发即弃”调用,然后关闭而不等待响应。它只是应该启动清理工作。这项工作可能需要几个小时才能完成,因此我不希望控制台应用程序保持打开状态并等待它。

我已在合同中的方法中添加了“IsOneWay=true”,但控制台应用程序仍会等待任务完成,然后再执行 client.close() 并退出。

如果我删除了 client.Close(),那么控制台应用程序会按照我想要的方式工作,但我不确定即使控制台应用程序不再运行,通道是否会保持打开状态?

这是我的控制台应用程序代码:

这是操作合约代码:

0 投票
3 回答
212 浏览

wcf - WCF 中的 OneWay 操作是否与 ClientCertificateMappingAuthorization 兼容?

我用一种 void 方法制作了一个 WCF,并将其部署在 IIS 上;它工作正常(服务响应是代码 202),直到我将其置于带有客户端证书身份验证的 SSL 下:在这种情况下,操作背后的代码未执行,服务器响应为 200。似乎没有引发异常(没有失败的请求被跟踪,事件查看器上没有错误)但我无法执行被调用的方法

这是 WCF 的实现和配置:

客户端代码及其配置:

在服务器日志上,我可以看到这个调用:

其中 SDI_user 是在 IIS 中的 manyToOneMapping 部分中指定的用户的名称,如图所示:(https://drive.google.com/open?id=1gGN6HrIDC9u160FuWx6MBwgi7MW7ppRS