问题标签 [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.
asp.net - 如何调用 IsOneWay WCF 服务并正确关闭客户端
我对 WCF 很陌生,我已经设置了一个测试网站和服务。我正在尝试两个完成两件事:
- 在不阻塞用户的情况下调用服务
- 正确关闭客户端
我创建了一个 web 服务并给它 isoneway 属性。我设法在不阻止用户的情况下调用它,但我担心我没有关闭客户端。如何在不阻止用户的情况下调用此服务并仍然正确关闭客户端?我应该使用异步方法(TestServiceAsync)吗?我应该使用 BeginXX、EndXX 方法吗?
客户:
网络服务:
网络配置:
c# - 当 IsOneWay = true 时,HttpContext.Current.User 为空
我有 wcf 服务。有些是一种方式,有些不是。那些不是使用表单身份验证的一种方式,我得到 HttpContext.Current.User。那些是一种方式在 HttpContext.Current.User 中获得空值。
怎么修?
我正在使用 ASP.NET 兼容模式
.net - 如何找出当前方法是否被 IsOneWay 标记
有没有办法知道当前正在执行的 WCF 方法是否是 OneWay 方法?
我正在使用 httpBinding,问题与服务器端有关。
我在 MSDN 上的 OperationContext 属性中搜索并找不到它。
编辑:
在 OneWay 调用的情况下,状态码将为 202,但这不是一个好方法。
有没有更好的方法?
wcf - 将方法声明为调用方的 AsyncPattern 和实现方的 OneWay 可能会产生什么后果
我有一项执行以下合同的服务:
为了避免在调用方停止(延迟很高时需要几秒钟),我想将合同更改为异步模式:
问题:由于生产限制,我将无法升级实施端。
我运行它,发现一切都按预期运行,只是只有在通道关闭时才调用结束回调。
问题是:我会遇到任何性能问题、内存泄漏或其他我没有想到的问题吗?
c# - 使用 C# 线程模拟 Fire & Forget 场景
我有一个网络服务,它需要很多时间来执行。我计划将处理任务委托给后台线程并立即将确认响应返回给用户。
在这种情况下,我担心后台线程的生命周期。
后台线程会在主方法/线程完成执行之前完成委托任务吗?
wcf - 如何使用 Fitnesse 测试 OneWay WCF 操作
在我们当前的应用程序中,我们正在尝试使用 WCF netMSMQBinding,它需要将 Operation Contract 标记为 One Way。
我们也在尝试使用 Fitnesse 作为我们的测试引擎,在我们的测试用例中,我们需要对场景进行端到端的测试,这意味着我们不能使用 One Way Operations,因为它们会在消息放入后立即返回queue 和 Fitnesse 将尝试断言结果,但实际消息可能尚未处理,也可能尚未处理。因此,如果我们使用单向操作,那么我们需要以某种方式等待它的执行完成。
方法尝试/研究..
通过读取配置在托管时更改 OperationDescription,以便在 Fitnesse IsOneWay 中托管时为 False,但在生产中 IsOneWay 为 True,然后用户 MSMQ 绑定仅在生产和测试中使用 tcp 或 netnamedpipe。
我们尝试在打开服务之前创建自定义 ServiceHost 并更改 OperationDescription,但在 OperationDescription 类中 IsOneWay 是只读属性,通过查看 .Net Framework 代码,它返回消息计数。在我看来,我必须重写 Service Host 的 CreateDescription 操作并且必须提供自定义实现。它似乎
在 Fitnesse 中创建一个 Monitor Fixture,它会以某种方式等待消息被处理。
方法 1:创建存储 MessageId 和已完成状态的自定义数据库表,并在每个消息处理结束时输入该表中的记录。所以现在fitnesse fixture可以轮询表并等待执行完成。
方法 2:以某种方式轮询 MSMQ 并知道何时处理消息。我们仍在重新研究如何使其发挥作用。
请就当前方法或任何新方法提出任何建议。
c# - 使用netTcpBinding的单向WCF调用:通过配置添加OneWayBindingElement
我想实现从 ASP.NET 应用程序到 WCF 服务(托管在 Windows 服务中)的单向、即发即弃的调用。这是服务端的一个长时间运行的操作(否则我只会在 ASP.NET 应用程序中执行此操作),因此客户端(通道)在操作完成之前不应保持打开状态。
无论这看起来多么微不足道,我一直在寻找一个优雅的解决方案几个小时,却找不到任何我喜欢的东西。有几个关于它的问题和博客文章,似乎有两种可能的解决方案:
我宁愿不使用消息队列,在服务器环境中安装这些开销太大。
剩下的就是添加OneWayBindingElement
。但是我发现的所有示例都在代码中执行此操作,我不想这样做,因为这排除了使用 Visual Studio WcfSvcHost 的可能性。是否可以通过配置扩展我的 netTcpBinding OneWayBindingElement
?
为了完整起见,以下是我的代码中的关键部分:
服务接口
服务实施
客户端代码,在控制器内部
服务配置
c# - 我是否需要从立即退出的控制台关闭与 WCF 服务的连接?
我有一个控制台应用程序,我想对 WCF 服务进行“即发即弃”调用,然后关闭而不等待响应。它只是应该启动清理工作。这项工作可能需要几个小时才能完成,因此我不希望控制台应用程序保持打开状态并等待它。
我已在合同中的方法中添加了“IsOneWay=true”,但控制台应用程序仍会等待任务完成,然后再执行 client.close() 并退出。
如果我删除了 client.Close(),那么控制台应用程序会按照我想要的方式工作,但我不确定即使控制台应用程序不再运行,通道是否会保持打开状态?
这是我的控制台应用程序代码:
这是操作合约代码:
wcf - WCF 中的 OneWay 操作是否与 ClientCertificateMappingAuthorization 兼容?
我用一种 void 方法制作了一个 WCF,并将其部署在 IIS 上;它工作正常(服务响应是代码 202),直到我将其置于带有客户端证书身份验证的 SSL 下:在这种情况下,操作背后的代码未执行,服务器响应为 200。似乎没有引发异常(没有失败的请求被跟踪,事件查看器上没有错误)但我无法执行被调用的方法
这是 WCF 的实现和配置:
客户端代码及其配置:
在服务器日志上,我可以看到这个调用:
其中 SDI_user 是在 IIS 中的 manyToOneMapping 部分中指定的用户的名称,如图所示:(https://drive.google.com/open?id=1gGN6HrIDC9u160FuWx6MBwgi7MW7ppRS)