2017-12-12 3 views
0

Ich erstellte Windows-Dienst und führe das exe meinen Server. Mein Windows-Servicecode istSignaler mit asp.net Windows-Dienst

public partial class Service1 : ServiceBase 
{ 
    private Timer timer1 = null; 
    public Service1() 
    { 
     // System.Diagnostics.Debugger.Launch(); 
     InitializeComponent(); 
    } 

    protected override void OnStart(string[] args) 
    { 
     timer1 = new Timer(); 
     this.timer1.Interval = 30000; 
     this.timer1.Elapsed += new 
     System.Timers.ElapsedEventHandler(this.timer1_tick); 
     timer1.Enabled = true; 
     Test_Library.writelog("Start"); 
    } 
    private void timer1_tick(object sender,EventArgs e) 
    { 
     Test_Library.writelog("Time-Ticker Started at "+ DateTime.Now); 
     string url = "https://localhost:8080/"; 
     try 
     { 
      Test_Library.writelog("Call Startup Class at "+ DateTime.Now); 
      WebApp.Start<Startup>(url); 
      Test_Library.writelog("End Startup Class at "+ DateTime.Now); 
     } 
     catch(TargetInvocationException ex) 
     { 
      Test_Library.writelog("Error in Startup Class at "+ DateTime.Now+ " Exception is : " +ex); 
      return; 
     } 


    } 

    protected override void OnStop() 
    { 
     timer1.Enabled = false; 
     Test_Library.writelog("Stop at " + DateTime.Now); 
    } 
} 

public class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 

     try 
     { 

      //Test_Library.writelog("SignalR Configuartion Started at "+ DateTime.Now); 
      //var hubConfiguration = new HubConfiguration 
      //{ 
      // EnableJSONP = true, 
      // EnableDetailedErrors = true 

      //}; 
      //app.MapSignalR(hubConfiguration); 
      app.Map("/Signalr", map => 
      { 
       map.UseCors(CorsOptions.AllowAll); 
       var hubConfiguration = new HubConfiguration 
       { 
        EnableJSONP = true, 
        EnableDetailedErrors = true 

       }; 
       map.RunSignalR(hubConfiguration);     
      }); 
     } 
     catch (Exception ex) 
     { 
      Test_Library.writelog("SignalR Error at " + DateTime.Now + " " + ex.ToString()); 
      //var writer = new StreamWriter("ClientLog.txt"); 
      //writer.AutoFlush = true; 
      //hubConnection.TraceLevel = TraceLevels.All; 
      //hubConnection.TraceWriter = writer; 
     } 
    } 
} 

public class MyHub : Hub 
{ 
    public void Send(string name, string message) 
    { 
     Clients.All.broadcastMessage(name, message); 
    } 
    public override Task OnConnected() 
    { 
     Test_Library.writelog("SignalR Client connected: " + DateTime.Now + " " + Context.ConnectionId); 
     // Program.mainForm.WriteToConsole("Client connected: " + Context.ConnectionId); 
     return base.OnConnected(); 
    } 

    public override Task OnDisconnected(bool tr) 
    { 
     Test_Library.writelog("SignalR Client disconnected: " + DateTime.Now + " " + Context.ConnectionId); 
     // Program.mainForm.WriteToConsole("Client disconnected: " + Context.ConnectionId); 
     return base.OnDisconnected(true); 
    } 
} 

Und mein Client-Code wird [Proxy generiert. (Server.js)]

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>Signalr Simple Chat</title> 
    <script src="Scripts/jquery-1.6.4.min.js"></script> 
    <script src="Scripts/jquery.signalR-2.2.2.min.js"></script> 
    <script src="Scripts/server.js"></script> 
    <script type="text/javascript"> 

      //Generated proxy 

     $(function() { 
      var connection = $.hubConnection('/signalr/', { useDefaultPath: false }); 
      connection.url = "https://localhost:8080/signalr"; 
      connection.logging = true; 
      connection.connected = true; 
      var chat = connection.createHubProxy('myHub'); 
      chat.on('broadcastMessage', function (name, message) { 
       var encodename = $('<div/>').text(name).html(); 
       var encodemsg = $('<div/>').text(message).html(); 
       $('#discussion').append('<li><strong>' + encodename + '</strong>: &nbsp;&nbsp;' + encodemsg + '</li>'); 
      }); 

      $('#displayname').val(prompt('Enter your name:', '')); 
      $('#message').focus(); 

      try { 
       connection.start({ transport: ['webSockets', 'longPolling'], jsonp: true }).done(function() { 
        $('#btnsendmsg').click(function() { 
         console.log('Now connected, connection ID=' + connection.id); 
         chat.invoke('send', $('#displayname').val(), $(message).val()); 
        }); 
       }).fail(function() { 
        window.onerror = function() { 
         console.log('Could not connect connection failed'); 
        }; 

       }); 
      } 
      catch (ex) { 
       console.log('Error=' + ex); 
      } 
      finally { 
       console.log('Final block '); 
      } 

     }); 

    </script> 
</head> 
<body> 
    <div class="container"> 
     <input type="text" id="message" /> 
     <input type="button" id="btnsendmsg" value="Send" /> 
     <input type="hidden" id="displayname" /> 
     <ul id="discussion"></ul> 
    </div> 



</body> 
</html> 

Wenn ich Windows-Dienst ausführen und den Dienst starten ich die Client-Anwendung ausgeführt wird i Fehler bekam ist "https://localhost:8080/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22myhub%22%7D%5D&callback=jQuery16406560848134472517_1513061441115&_=1513061443867".

So lösen Sie dieses Problem. Bitte beraten Sie mich.

Vielen Dank im Voraus ..

von Angappan.S

Antwort

0

Sie zu entfernen EnableJSONP versuchen würde;

  var hubConfiguration = new HubConfiguration 
      { 
       EnableDetailedErrors = true 
      }; 

und Clientseite;

connection.start({ transport: ['webSockets', 'longPolling'] }) 
+0

Ich bekomme den gleichen Fehler. –

+0

Würdest du den Fehlerstatus teilen? – lucky

+0

Fehler beim Laden der Ressource: net :: ERR_CONNECTION_REFUSED https: // localhost: 8080/signager/verhandeln? ClientProtocol = 1.5 & connectionData =% 5B% 7B% 22name% 22% 3A% 22myhub% 22% 7D% 5D & _ = 1513067997932 –

Verwandte Themen