Отключение при загрузке мультимедиа в приложении SignalR Chat

#c# #asp.net #signalr

#c# #asp.net #signalr

Вопрос:

Я создал приложение для чата, посмотрев на приведенный здесь пример, но при отправке мультимедиа соединение отключается, а затем оно подключается.Та же проблема существует в примере. Я не смог найти причину проблемы.

https://www.c-sharpcorner.com/article/signalr-chat-app-with-asp-net-webform-and-bootstrap-part-three/

Этот код для кнопки вложения.

 <span class="upload-btn-wrapper">  
  
<button id="btnFile" class="btn btn-default btn-flat"><i class="glyphicon glyphicon-paperclip"></i></button>  
  
<ajaxToolkit:AsyncFileUpload OnClientUploadComplete="uploadComplete" runat="server" ID="AsyncFileUpload1" ThrobberID="imgLoader" OnUploadedComplete="FileUploadComplete" OnClientUploadStarted="uploadStarted" /> 
  

Код позади.

 protected void FileUploadComplete(object sender, EventArgs e)  
{  
   string filename = System.IO.Path.GetFileName(AsyncFileUpload1.FileName);  
   AsyncFileUpload1.SaveAs(Server.MapPath(this.UploadFolderPath)   filename);  
} 
  

Часть javascript.

 function uploadStarted() {  
 
$get("imgDisplay").style.display = "none";  
} 

function uploadComplete(sender, args) {  
   var imgDisplay = $get("imgDisplay");  
   imgDisplay.src = "images/loading.gif";  
   imgDisplay.style.cssText = "";  
   var img = new Image();  
   img.onload = function () {  
       imgDisplay.style.cssText = "Display:none;";  
       imgDisplay.src = img.src;  
   };  
 
       imgDisplay.src = "<%# ResolveUrl(UploadFolderPath) %>"   args.get_fileName();  
   var chatHub = $.connection.chatHub;  
   var userName = $('#hdUserName').val();  
   var date = GetCurrentDateTime(new Date());  
   var sizeKB = (args.get_length() / 1024).toFixed(2);  
 
   var msg1;  
 
   if (IsValidateFile(args.get_fileName())) {  
       if (IsImageFile(args.get_fileName())) {  
           msg1 =  
            ....  
       }  
       else {  
           ..
       }  
       chatHub.server.sendMessageToAll(userName, msg1, date);  
                
   }  
   imgDisplay.src = '';  
} 
  

Мои коды подключения.

 public override Task OnConnected()
       {
           try
           {
               var connId = Context.ConnectionId;
               var user = ent.USERS.Where(u => u.username == IdentityName).FirstOrDefault();

               var userModel = new ConnectedUser
               {
                   id = user.userID,
                   connectionId = connId,
                   name = user.name,
                   surname = user.surname,
                   username = user.username,
                   currentTicketId = 0
               };

               _Connections.Add(userModel);

               string fullName = user.name   " "   user.surname;
               Clients.Caller.getProfileInfo(user.userID, fullName);

               List<string> userInTicketsName = new List<string>();
               var userInTickets = GetAllTickets();

               foreach (var tickets in userInTickets)
               {
                   userInTicketsName.Add(tickets.name);
               }
               Clients.OthersInGroups(userInTicketsName).addUser(userModel);

           }
           catch (Exception ex)
           {
               Clients.Caller.onError("OnConnected:"   ex.Message);
           }

           return base.OnConnected();
       }

       public override Task OnDisconnected(bool stopCalled)
       {
           try
           {

               var user = _Connections.Where(u => u.username == IdentityName).First();
               List<string> userInTicketsName = new List<string>();
               var userInTickets = GetAllTickets();

               foreach (var tickets in userInTickets)
               {
                   userInTicketsName.Add(tickets.name);
               }
               //Tell other users to remove you from their list
               Clients.OthersInGroups(userInTicketsName).removeUser(user);
               _Connections.Remove(user);

           }
           catch (Exception ex)
           {
               Clients.Caller.onError("OnDisconnected: "   ex.Message);
           }

           return base.OnDisconnected(stopCalled);
       }

       public override Task OnReconnected()
       {
           var user = ent.USERS.Where(u => u.username == IdentityName).FirstOrDefault();
           string fullName = user.name   " "   user.surname;
           Clients.Caller.getProfileInfo(user.userID, fullName);

           return base.OnReconnected();
       }