问题标签 [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.
wcf - 在异步模式下调用服务时出错
Stackoverflow 绝对是最快的论坛,所以在 WCF 论坛上发布这个问题后,我决定来这里。
我有一个 wcf 服务,它返回一个字典(IDictionary)并且工作得很好。现在我想添加在异步模式下调用该服务的功能,但是当 BeginMethod 被执行时,我得到以下异常:
类型 System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[TransferProp, Contracts, Version=10.1.0.0, Culture=neutral, PublicKeyToken =6f5bf81c27b6b8aa]] 不受支持,因为它实现了 IDictionary。
那是怎么回事?
wcf - 在 Silverlight 中删除过时的 WCF 响应
在 Silverlight 中,我遇到了以下问题。如果您向 Web 服务发出多个请求,则响应可能不会按顺序返回。这意味着如果第一个请求比以下请求花费的时间更长,它的响应将最后返回:
现在在我的场景中,我只对最近发出的请求感兴趣。所以 A 和 B 应该被忽略,而 C 应该被保留为唯一接受的响应。
管理此问题的最佳方法是什么?到目前为止,我想出了这个解决方案:
发送请求时将生成的 GUID 作为用户对象传递,并将该值存储在某处。由于所有响应都将包含它们各自的 GUID,因此您现在可以过滤掉过时的响应。请求计数器而不是 GUID 也可以工作。
现在我想知道是否有更好的方法来解决这个问题。也许有任何开箱即用的功能可以使这成为可能?欢迎任何想法..
asp.net - 中止异步 Web 服务调用并重定向到另一个 URL (ASP.NET Ajax)
在我的 web 应用程序中,我有一个从代码隐藏生成并绑定到转发器控件的链接列表。单击链接会打开一个弹出窗口,在该窗口中,除了显示一些数据外,还会对 WCF 服务进行异步调用(通过 javascript 代理)。该服务反过来调用另一个可能需要很长时间才能响应的第三方 Web 服务。我正在使用 IE6,这是一个不可避免的要求。
现在,如果用户决定不等待调用完成并关闭弹出窗口,我会在 onunload 时中止此服务。问题是,如果用户在之后立即单击转发器中的另一个链接,新的弹出窗口将打开但不会加载页面(不转到提供的 URL),直到上一个异步调用完成(我已经验证了这一点通过提琴手)。有趣的是,这只发生在同一域内的链接上。如果我将其中一个 popus 的链接更改为 www.google.com,则窗口将打开并按预期转到正确的 url。但是,对于在我自己的域中包含链接的弹出窗口,在关闭带有未完成请求的弹出窗口后立即打开,它会等到前一个请求完成后再加载 url。
我已经验证了中止回调的正确方法,并且 abort 确实会正确触发。我也知道我只能中止我的客户端调用,而不是服务器端调用,我不在乎。我唯一的要求是浏览器加载下一个链接,而不考虑之前的异步响应。
背景的有用/类似链接:
browser-waits-for-ajax-call-to-complete-even-after-abort-has-been-called-jquery aborting-an-asp-net-web-service-asynchronous-call canceling-ajax-web-service-称呼
有人遇到过这个吗?它让我发疯!任何帮助将不胜感激。
wcf - 对 Windows 服务中托管的 WCF 服务的异步调用
我在 Windows 服务中托管了 WCF 服务。我有控制台应用程序,我为其添加了 WCF 服务引用并为其生成了客户端。
我可以对服务进行同步调用,但异步调用似乎不起作用。如果我附加服务器进程,它根本不会影响服务。
这是一个已知问题吗?
wcf - 异步结束未在 WCF 中调用
我有以下情况: 我的 WCF 服务允许客户端注册以等待某个事件。等待在服务端是异步的,即注册服务员,当进程完成后,通知服务员。目前,它只是一个ManualResetEvent
.
现在我想通过 WCF 公开这个方法。我尝试使用AsyncPattern=true
并创建了两种方法,BeginWait
它们将事件捆绑到 中IAsyncResult
,并EndWait
调用AsyncWaitHandle.WaitOne()
. 但是,如果我从客户端调用BeginWait
,则不会执行服务器端。我正在使用手动实现的包装器(我的代理类是从 派生的),它基本上调用,并且确实调用了这个函数;但在服务器端,电话永远不会到达。EndWait
EndWait
ChannelBase<IWaitService>, IWaitService
Channel.EndWait()
我在这里做错了什么?后续问题:如果异步调用正常工作,是否有一种简单的方法可以在客户端实现同步?
.net - 异步 Web 服务设计模式
在编写连接到 WCF Web 服务的 Silverlight 应用程序时,我们在使用 Web 服务时看到的唯一选项是对 WS 接口进行异步调用。
IE
虽然我理解编写 webapps(安全网)时异步调用的原因,但如果编写的方法的每个步骤都依赖于 Web 服务调用的结果,将使用哪种类型的设计模式?
例如,如果 Web 服务中有一个方法检查访问者的用户凭据,并且根据该用户的组,将执行一些操作。
有没有办法在不使用由先前异步调用完成事件触发的方法的“多米诺”设计的情况下完成此操作?如果有很多客户端/服务交互,它似乎会变得混乱。
谢谢!
wcf - 来自 Silverlight 3 的异步 Web 服务调用
在从 silverlight 3 调用 wcf 服务并在单独的线程上更新 ui 的场景中,我有一个关于事件顺序的问题。基本上,我想知道我所做的是否正确......示例如下。这是我在这里的第一篇文章,所以请耐心等待,因为我不确定如何发布实际代码。样品如下:
所以我的问题基本上是,在我的 UI 线程内部,当我加载响应时,如果抛出异常,“finally”块会捕捉到它吗?如果不是,我应该在加载响应的 lambda 中再放一个 try/catch 吗?
另外,由于我在 ui 线程上执行加载,最终是否有可能在 UI 线程完成更新之前执行?因此可以在加载完成之前调用 Servicehelper.CloseService() 吗?
我问是因为我在使用这种方法时遇到了间歇性问题。
asp.net - 返回 null 的异步 Web 服务调用(从 ASP.NET 异步页面调用)
我正在使用已在 WCF 中实现的第 3 方 Web 服务。
我的消费者代码驻留在 ASP.NET 异步页面上。
问题是,有时 BeginCallWebService() 方法返回 null。它不应该总是返回一个 IAsyncResult 对象吗?
我应该要求 Web 服务开发人员修改他们的代码,还是 null 是一个合法的响应?
.net - [OperationContract(IsOneWay = true)] 和检查生成的异步操作复选框有什么区别?
用标记 WCF 方法有什么区别
[OperationContract(IsOneWay = true)]
属性并在添加服务引用时检查生成异步操作复选框?
从我读过的内容来看,调用的异步性质似乎应该只在客户端定义。如果是这样,那有什么意义[OperationContract(IsOneWay = true)]
呢?
现在,我只是在 WCF 方法中运行了以下方法。
我在客户的代码中创建了一个服务引用,我只需调用:
indexerClient
我的 WCF 服务的实例在哪里。
这也应该有效吗?似乎没有,就好像它在返回之前等待线程完成一样。
c# - WCF 3.5 REST 端点是否异步调用关联方法?
当 WCF 3.5 REST 端点(通过WebServiceHost)处理 URI 请求时,它是否异步调用关联的过程?
谢谢,
斯科特