从服务获取对象时(服务)程序冻结

问题描述 投票:0回答:2

大家好我不断得到这个问题,我没有得到任何具体的错误信息。

它是一个扫雷游戏项目。

我可以登录,并在列表框中查看所有登录播放器的列表。工作正常。

服务的方法也可以正常工作。在调试模式下,它将类型为“MsServer300.User”的所需对象返回到客户端的方法,然后执行的下一行现在返回到客户端的方法中,并在那里冻结。 (MsServer300是包含该服务的Project的名称)。 “User”类来自连接到服务的数据库。

有什么想法吗?谢谢!!

这是客户端方法:(错误搜索原因很长)

private void listBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { ///////////
        try
        {
            MsServiceClient proxy = new MsServiceClient(new InstanceContext(Callback));
            string s = LbConnectedPlayers.SelectedItem.ToString();

            var userDetails = proxy.GetDetails(s);  //<<<here is the error  
            if (userDetails == null)
                MessageBox.Show("user details is null");
            else
            LbConnectedPlayers.ItemsSource = userDetails.ToString();
        }catch(Exception ex){
            MessageBox.Show("error in selectionchange    "+ex.Message);
        }

    }

这是服务方法:

        public User GetDetails(string name)
    {
        try
        {
            using (ms_AvishayAndRonen6Entities ctx = new ms_AvishayAndRonen6Entities())
            {
                //User user = ctx.Users.SingleOrDefault(a => a.UserName == name);
                //return user;
                User user = (from m in ctx.Users
                           where m.UserName == name
                           select m).First();
                return user;
            }
        }
        catch (Exception ex)
        {
            User exUser = new User();
            exUser.UserName = ex.Message;
            return exUser;
        }

    }
c# linq wcf service server
2个回答
0
投票

我没有看到连接细节,但我总是将Multiple Active Results Sets设置为True。试试看,看看是否能解决你的问题。这是一个连接字符串示例:

using System.Data.SqlClient;

namespace MyConnection
{
class Connection
{

  public static SqlConnection GetConnection()
  {
        string connectionString = "Data Source=WhateverYourdataSource;Initial Catalog=EDI;Persist Security Info=True;User ID=YourID;Password=Password.is;Integrated Security=False;MultipleActiveResultSets=True";
        SqlConnection connection = new SqlConnection(connectionString);
        return connection;
    }

}
}

0
投票

它解决了!问题是在“用户”对象内部有一个不同的对象,其中包含“用户”列表,因此可能会进入无限循环或其他东西。

当我删除此对象时,用户对象正确传递。

© www.soinside.com 2019 - 2024. All rights reserved.