问题标签 [asynchronous-wcf-call]

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 投票
0 回答
247 浏览

c# - WCF:异步调用的操作调用程序中的全局错误处理

我想要对我的 wcf 服务进行全局错误处理。因此我想实现我自己的 Operation Invoker。每个服务操作都有一个从基本响应类型继承的响应类型。如果操作成功,则此基本响应类型具有一个标志,并根据异常提供错误代码(在代码片段中省略)。同步调用的实现看起来像下面的代码,但是我怎样才能对异步调用做同样的事情呢?

顺便说一句:您一般如何看待这种方法?

0 投票
2 回答
3298 浏览

c# - 回调中的 WCF 服务超时

我正在尝试掌握 WCF,特别是编写带有回调的 WCF 服务应用程序。

我已经设置了服务以及回调合同,但是当回调被调用时,应用程序超时。

本质上,我从客户端设置服务类中的属性。此属性的 Setter,如果验证失败,则会触发回调,并且,这是超时。

我意识到这可能不是异步回调,但有人可以告诉我如何解决这个问题吗?

谢谢

以及实施...

我的界面已被修改为(希望)反映异步能力

..和实现(请,我非常非常,猜测这一点 - 除了它不起作用 - '服务器回复了未知响应的运行时错误......'

回调由我的服务中的公共方法调用,可从客户端调用

界面修改是...

请-我知道上面看起来很绝望,这就是为什么。我只想从我的 WCF 服务中获得任何回电,以便我可以继续进行此操作。简单地调用异步回调应该不难。

我只是想从服务向客户端触发一个事件。这就是我想要做的。以下可能解释了我试图更清楚地实现的事件过程......

客户端调用服务方法并等待......服务方法 1 承担一些工作(在这种情况下,查询数据库并构造一个 xml 响应)当工作完成时,服务会触发一个回调事件,告诉客户端工作已经完成并且XML 响应可用。客户端读取 XML 响应并继续。

嘘...

0 投票
0 回答
473 浏览

c# - 将从 Javascript 调用的同步 WCF 服务转换为异步

如何使我的WCF 图像上传服务异步而不是同步。我的SaveImage函数是直接从异步 javascript 调用中调用的。

合同(IImageWCFService.cs):

服务(ImageWCFService.svc.cs):

我返回 void 是因为这应该是单向调用,用户不需要从函数中获取任何结果或它是否成功。

现在当这个 WCF 服务运行时,它将消耗主线程。我希望它异步运行。我读过推荐的方法是使用:

WCF 的基于任务的异步模式。

我读过很多文章,但仍然很困惑如何在我的函数中实现它。我需要一个代码示例来显示我的图像上传功能的实现。

注意:关于这个问题中各种异步实现之间差异的一个很好的来源- 它说实现它的最佳方法是对 WCF 使用基于任务的异步模式

同样,调用是直接从 JavaScript 进行的,但我没有问题创建一个 web 服务 (asmx) 一个保存服务器,如果需要的话,它将在服务器端调用 WCF 服务,但是我再次对所有内容感到困惑这个。

谢谢。

0 投票
1 回答
2140 浏览

wcf - TransactionScopeAsyncFlowOption 和隔离级别?

我在 WCF 服务中使用 Entity Framework 6.1 并希望使用 READ UNCOMMITTED 隔离级别包围我的 SELECT 查询,因为其他批处理更新将插入到我正在读取的表中并且不想锁定这些批处理更新发生当对表执行 READ 时。这基本上模拟了 SELECT WITH NOLOCK。

该代码也以异步方式使用。因此,我不能简单地使用 TransacactionScope。请注意,我也在使用 .Net 4.5.1 框架。

我可以将 TransactionScope 上的隔离级别设置为 ReadUncommitted,但 TransactionScopeOption 的默认值为 ReadCommitted。我看不到任何改变隔离级别的方法。

有没有办法改变隔离级别?如果我无法设置隔离级别,我的查询是否可以在上述情况下运行。

实际上,如果我不能将隔离级别设置为“NOLOCK”,我什至不需要包含 TransactionScopeAsyncFlowOption。

0 投票
1 回答
853 浏览

c# - 如何从任务异步返回 WCF 响应中的流?

我有一个类可以对大量数据进行一些长时间运行的处理,并将输出写入我提供的流中。我正在尝试将 WCF 放在前面(使用命名管道),但无法弄清楚如何返回流。到目前为止,我有这样的事情:

一切都经历了这些动作,但当然没有任何源数据能够传递给客户端。我对如何做到这一点感到困惑(也许我做不到),因为我需要返回流并运行任务并可能等待任务完成。如果我只是调用 SourceProcessor.Run(s) 而不是在任务中,据称它会阻塞和缓冲,但我不确定如何让它等到任务完成,同时还返回流供客户端读取...

0 投票
1 回答
9582 浏览

c# - 如何解决 WCF 中的 System.ServiceModel.ServerTooBusyException?

我正在开发一个每天平均访问​​量为 50,000 次(大约 140,000 次页面浏览量)的网站。我正在使用WCF我的服务InstanceContextMode = InstanceContextMode.PerCall
另外,我正在使用异步方法来调用 WCF 服务,
最近我在某些页面和某些请求上收到以下异常消息:

可以改成serviceBehaviors下面这样吗?
以下是一个好的解决方案吗?

我是说serviceThrottling maxConcurrentCalls="2147483647" maxConcurrentInstances="2147483647" maxConcurrentSessions="2147483647"