【问题标题】:Silverlight -How to handle nested .ExecuteAsync With DevForceSilverlight - 如何使用 DevForce 处理嵌套的 .ExecuteAsync
【发布时间】:2013-01-30 20:55:50
【问题描述】:

我遇到以下情况,这给了我错误并且看起来像超时。 它缺少一些记录插入。 错误如下:

IdeaBlade.EntityModel.AsyncProcessor1.<>c__DisplayClass2.<.ctor>b__0(TArgs args) at IdeaBlade.EntityModel.AsyncProcessor1.Signal() 在 IdeaBlade.EntityModel.AsyncProcessor`1.b__5(Object x)

内部异常: [HttpRequestTimedOutWithoutDetail] 论据: 调试资源字符串不可用。通常,关键和论据提供了足够的信息来诊断问题。见http://go.microsoft.com/fwlink/?linkid=106663&Version=5.0.10411.00&File=System.ServiceModel.dll&Key=HttpRequestTimedOutWithoutDetail

在 IdeaBlade.EntityModel.EntityServerProxy.c_DisplayClass14.b_13() 在 IdeaBlade.EntityModel.EntityServerProxy.ExecFunc[T](Func1 func, Boolean funcWillHandleException) at IdeaBlade.EntityModel.EntityServerProxy.ExecuteOnServer[T](Func1 func, Boolean funcWillHandleException) 在 IdeaBlade.EntityModel.EntityServerProxy.InvokeServerMethod(SessionBundle sessionBundle,ITypeWrapper entityManagerType,字符串类型名称,字符串方法名称,对象 [] 参数) 在 IdeaBlade.EntityModel.EntityMa

任何想法如何处理它? 谢谢:)

              ......
            .ExecuteAsync(op =>
            {
                var cust =Customers.Where(p => p.IsSelected).ToList();

                           ..........................

                   Ships.ForEach(.......
                              ...........
                        EntityManager.SalesGetSalesQuery(
                         ..............
                        .ExecuteAsync(opn =>
                        {

                                 ................

                                                        });

                    p.UpdateOrders(copyOrders);


                    Orders.Add(copyOrders);


                Save();
            });

【问题讨论】:

    标签: silverlight devforce


    【解决方案1】:

    超时可能在多个地方发生,因此您需要增加所有可能的超时值。

    在这种情况下,您应该考虑增加查询(CommandTimeout 和 Transaction)、通信和 IIS executionTimeout。

    DevForce 有一个文档页面,用于讨论超时故障排除。在http://drc.ideablade.com/devforce-2012/bin/view/Documentation/understand-timeouts

    我注意到您的嵌套查询(“SalesGetSalesQuery”)是一个 StoredProcQuery。存在一个突出的错误,即 StoredProcQueries 不遵守事务超时值(如果与默认值不同)。 (120 秒)我们正在努力修复,但不幸的是,在此期间没有解决方法。

    如果不是 StoredProcQuery 超时,那么上面的链接将帮助您解决它。

    【讨论】:

    • Thx sbelini,是的,你看到它是一个嵌套的异步,内部的我在循环中调用存储过程。我尝试了不同的场景来绕过问题,例如在配置文件中增加 SendTimeout 和.. .....它没有工作。
    • 还有其他方法吗?
    【解决方案2】:

    第 1 项工作是增加超时时间,同时弄清楚什么需要这么长时间。

    这将有助于https://stackoverflow.com/questions/4877315/silverlight-4-ria-services-timeout-issues

    【讨论】:

    • 谢谢,但我没有使用任何服务,只是访问实体(客户),有没有增加超时时间?
    • 您正在使用一项服务,但毫无疑问,这一切都是生成的。增加超时的答案在链接的帖子中。会有一个从 DomainService 派生的类,只要做一个文本搜索,你就会找到它。
    • 我在 web.config 和 app.config 上找到了它,我把它们都改成了 sendTimeout="00:10:00" 仍然超时:(
    【解决方案3】:

    我认为问题不在于异步调用是嵌套的。请记住,第二个(即嵌套的)异步调用只会在第一个完成后执行。

    什么异步调用正好超时?是 StoredProcQuery 吗? (它们中的任何一个,因为您在循环中调用它们)如果是,那么这是我们正在努力修复的一个突出的错误。就像我在上一篇文章中提到的那样,没有解决方法。但是,由于这个特定的 storedProc 将日期范围作为参数,因此一种可能性是在较小的日期范围内“打破”这个日期范围并发出多个异步调用。 (可能在并行协程中)并不是说这种“变通办法”不是防故障的,因为所有订单都可能在一个小范围内,并且对该特定范围的异步调用仍然会超时。

    sbelini.

    【讨论】:

    • 一个问题,这个消息是客户端消息吗?因为我放了 Try -catch,它忽略了我的 try-catch
    猜你喜欢
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 2022-07-24
    • 2017-04-15
    • 1970-01-01
    • 2011-06-18
    • 2017-09-18
    • 2019-06-21
    相关资源
    最近更新 更多