public virtual void Uninitialize()
 {
     _features = default(FeatureReferences<FeatureInterfaces>);
     if (_request != null)
     {
         UninitializeHttpRequest(_request);
         _request = null;
     }
     if (_response != null)
     {
         UninitializeHttpResponse(_response);
         _response = null;
     }
     if (_authenticationManager != null)
     {
         UninitializeAuthenticationManager(_authenticationManager);
         _authenticationManager = null;
     }
     if (_connection != null)
     {
         UninitializeConnectionInfo(_connection);
         _connection = null;
     }
     if (_websockets != null)
     {
         UninitializeWebSocketManager(_websockets);
         _websockets = null;
     }
 }
 protected virtual void UninitializeConnectionInfo(ConnectionInfo instance) { }
    private static string GetIpAddress(ConnectionInfo request)
    {
      var ip = request.RemoteIpAddress ?? request.LocalIpAddress;
      if (ip == null) return "";
      int? port = request.RemotePort == 0 ? request.LocalPort : request.RemotePort;

      if (port != 0) return ip + ":" + port.Value;

      return ip.ToString();
    }