diff --git a/AgileConfig.Server.Apisite/Websocket/WebsocketHandlerMiddleware.cs b/AgileConfig.Server.Apisite/Websocket/WebsocketHandlerMiddleware.cs index 84ff906..61bf6a1 100644 --- a/AgileConfig.Server.Apisite/Websocket/WebsocketHandlerMiddleware.cs +++ b/AgileConfig.Server.Apisite/Websocket/WebsocketHandlerMiddleware.cs @@ -7,6 +7,7 @@ using System.Net.WebSockets; using System.Text; using System.Threading; using System.Threading.Tasks; +using System.Web; using AgileConfig.Server.Apisite.Filters; using AgileConfig.Server.IService; using Microsoft.AspNetCore.Http; @@ -40,6 +41,7 @@ namespace AgileConfig.Server.Apisite.Websocket { if (!await appBasicAuth.ValidAsync(context.Request)) { + context.Response.StatusCode = 401; await context.Response.WriteAsync("basic auth failed ."); return; } @@ -51,7 +53,15 @@ namespace AgileConfig.Server.Apisite.Websocket } WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync(); var name = context.Request.Headers["client_name"]; + if (!string.IsNullOrEmpty(name)) + { + name = HttpUtility.UrlDecode(name); + } var tag = context.Request.Headers["client_tag"]; + if (!string.IsNullOrEmpty(tag)) + { + tag = HttpUtility.UrlDecode(tag); + } var clientIp = GetRemoteIp(context.Request); var client = new WebsocketClient() @@ -75,6 +85,7 @@ namespace AgileConfig.Server.Apisite.Websocket { _logger.LogError(ex, "Handle websocket client {0} err .", client.Id); await _websocketCollection.RemoveClient(client, WebSocketCloseStatus.Empty, ex.Message); + context.Response.StatusCode = 500; await context.Response.WriteAsync("closed"); } }