Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp.Net Mvc WebSocket-客户端的自定义参数_C#_Asp.net Mvc_Asp.net Web Api_Websocket_Websocket Sharp - Fatal编程技术网

C# Asp.Net Mvc WebSocket-客户端的自定义参数

C# Asp.Net Mvc WebSocket-客户端的自定义参数,c#,asp.net-mvc,asp.net-web-api,websocket,websocket-sharp,C#,Asp.net Mvc,Asp.net Web Api,Websocket,Websocket Sharp,我的WebSocket结构如下所示 public HttpResponseMessage Get(int id, string kod) { if (HttpContext.Current.IsWebSocketRequest) { HttpContext.Current.AcceptWebSocketRequest(new SocketHandler(id, kod)); return Request.CreateResponse(H

我的WebSocket结构如下所示

public HttpResponseMessage Get(int id, string kod)
{
    if (HttpContext.Current.IsWebSocketRequest)
    {
        HttpContext.Current.AcceptWebSocketRequest(new SocketHandler(id, kod));      
        return Request.CreateResponse(HttpStatusCode.SwitchingProtocols);
    }
    else
    {
        return Request.CreateResponse(HttpStatusCode.BadRequest);
    }
}

class SocketHandler : WebSocketHandler
{
    DnaEntities db = new DnaEntities();

    private static WebSocketCollection Clients = new WebSocketCollection();
    private Yonetim_Kullanici Kullanici;

    public SocketHandler(int KullaniciId, string OturumKontrolKod)
    {
        var sorgu = db.Yonetim_Kullanici.Where(k => k.Id == KullaniciId && k.OturumKontrolKod == OturumKontrolKod && k.Durum == 1);
        if (sorgu.Count() == 1)
        {
            Kullanici = sorgu.FirstOrDefault();
        }
    }

    public override void OnOpen()
    {
        if (Kullanici != null)
        {
            Clients.Add(this);
        }
        base.OnOpen();
    }
    public override void OnClose()
    {
        Clients.Remove(this);
        base.OnClose();
    }

    public override void OnMessage(string data)
    {
        foreach (var item in Clients)
        {
            var data = item.Kullanici
            //item.Send();
        }
    }
如下,我可以发送给每个人

Clients.Broadcast(message);
但是,当我想一个接一个地发送:

foreach (var item in Clients)
{
    var UserModel = item.Kullanici;
}
错误消息:

“WebSocketHandler”不包含“Kullanici”的定义,并且 没有接受类型为的第一个参数的扩展方法“Kullanici” 可以找到“WebSocketHandler”


item.Kullanici=>正如您在

中看到的,我认为您应该能够首先将其强制转换到继承的类,例如

var UserModel = ((SocketHandler)item).Kullanici

您还没有显示它,但是我假设
客户机中的项目属于
WebSocketHandler

类型,谢谢。是的,选演员是个好主意@ADyson第二个问题?@BarışSamedHalıcı如果你有第二个问题,请在新帖子中创建第二个单独的问题。我回答了当时显示的原始问题。因为人们回答问题会得到分数,所以你不能一直在同一篇文章中添加更多的问题。如果我的回答有助于回答原始问题,请标记为已接受。如果你想让我帮你回答另一个问题,请在这里发表评论,并附上链接。谢谢。是的,这是真的。但第二个问题是第一个问题的延续。第二个问题的答案可能因第一个问题的备选方案而异。谢谢。如果你仍然坚持,我提出一个新问题。没问题。据我所知,我的答案是第一个问题的唯一解决方案,所以两者之间没有任何直接联系。您希望将Kisisel_Bildirimlerim对象列表中的值与SocketHandler对象列表中的某些值进行比较。诚实地说,它们是如何产生的(例如通过铸造或其他方法)并不真正相关。所以是的,请提出一个新问题。。。但是首先要做一些关于比较C语言中的列表的研究,一般来说,可能有一个普遍的例子,说明已经存在的原则,你可以进行调整。