public void ProcessRequest(HttpContext context) { if (server == null) { lock (lockObj) { if (server == null) { server = new RpcServer(); this.InitRpcServer(server); (server as RpcServer).Start(); } } } IRpcHttpContext ctx = new WebHost.SystemWebHttpContext(context); if (!string.IsNullOrEmpty(ctx.Request.UserAgent) && ctx.Request.UserAgent.IndexOf("RpcOverHttp", StringComparison.OrdinalIgnoreCase) != -1) { context.Response.TrySkipIisCustomErrors = true; server.ProcessRequest(ctx); } else if (ctx.IsWebSocketRequest) { ctx.AcceptWebSocket(server.ProcessWebsocketRequest); } }