【问题标题】:SL4 WCF RIA Query Issue: "Completed" happening before it's really completed?SL4 WCF RIA 查询问题:“已完成”在真正完成之前发生?
【发布时间】:2010-08-13 15:11:45
【问题描述】:

我在 SL4 应用程序中使用的 WCF RIA 服务有一个奇怪的小问题。这是我拥有的按钮单击处理程序的代码:

    private void btnTest_Click(object sender, RoutedEventArgs e)
    {
        LanguageContext context = new LanguageContext();
        LoadOperation<Language> op = context.Load(context.GetLanguagesQuery());

        op.Completed += (obj, args) =>
            {
                if (!op.HasError)
                {
                    System.Threading.Thread.Sleep(500);
                    MessageBox.Show(context.Languages.FirstOrDefault().DisplayName);
                }
            };
    }

请注意,处理程序中有一个 Sleep 调用。没有那个睡眠调用,我得到一个异常(将请求发送到服务器时发生了传输级错误。(提供者:共享内存提供者,错误:0 - 管道的另一端没有进程。))。如果此代码在“已完成”处理程序中,我认为它实际上已经在它到达那里时完成了。为什么没有 Sleep() 它会死掉?顺便说一句,Sleep() 不是生产的选项,它只是一个解决问题的工具:)

【问题讨论】:

  • 顺便说一句,这是一个域服务,作用于 SQL Server 2008 R2 DB 的 EF 模型...如果其中任何一个对您很重要。
  • 同样,如果有用的话,我的 SQL Server 上启用了命名管道。这是连接字符串:Data Source=.;Initial Catalog=TDS;Integrated Security=True;MultipleActiveResultSets=True

标签: sql-server-2008 silverlight-4.0 entity-framework-4 wcf-ria-services


【解决方案1】:

所以,如果我将“pooling=false”添加到我的连接字符串,一切正常。但是,我真的不喜欢这个答案。连接池是一件好事。有没有办法让它保持打开状态并继续工作?

【讨论】:

  • 我想我必须使用 pooling=false。我还没有找到任何其他方法。
【解决方案2】:

我也可以重现这个问题。

例如,我有一个单元测试,如果连续运行两次将失败第二次。

这个单元测试执行了几件事:
1. 使用自定义实体框架 4.1 DbContext Initiailzer
删除并重新创建数据库 2. 启动 silverlight 应用程序
3.点击silverlight应用程序中的一个按钮

此时,silverlight 应用程序调用 wcf ria 服务来查询刚刚创建的数据库。
但是,每次第二次运行单元测试时,我都会收到相同的错误。
但是,例如,如果我再次单击该按钮,错误会立即消失。

在我的连接字符串中设置“Pooling=False”并不能解决我的问题。

但是,我能够通过在创建数据库后重新启动托管 silverlight 应用程序和 ria 服务的 Web 服务器来解决此问题。

就我而言,我只是决定使用 Cassini Dev Web Server v4 并在该 Web 服务器而不是 iis 上运行测试。

Windows 7 Ultimate x64
Visual Studio 2010 SP1
实体框架 4.1
适用于 Silverlight 4 的 WCF RIA 服务 SP1
Silverlight 4
MSTest

编辑:
Entity Framework 4.1 Update 1 包含一个错误修复,以消除在使用 SQL 身份验证时在连接字符串中指定“Persist Security Info=True”的需要。
http://www.microsoft.com/download/en/details.aspx?id=26825

我(还)不确定该错误是否相关并且也可能解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多