public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext) { try { if (!request.Properties["Via"].ToString().Contains("AdministracionWCF.svc")) { servicioMantenimiento = unityContainer.Resolve <IMantenimientoService>(); bool modoMantenimiento = servicioMantenimiento.EnModoMantenimiento(); if (modoMantenimiento) { throw new Exception("El sistema se encuentra en modo mantenimiento y no es posible procesar su solicitud."); } } string strOperacion = request.Properties["HttpOperationName"].ToString(); if (!new string[] { "", "ObtenerUltimaVersionMobileApp", "ObtenerUltimaVersionApp", "DescargarActualizacion", "LimpiarRegistrosInvalidos", "ProcesarDocumentosElectronicosPendientes", "ValidarCredencialesAdmin", "ValidarCredenciales", "ObtenerListadoEmpresasAdministrador", "ObtenerListadoEmpresasPorTerminal", "ObtenerListadoTerminalesDisponibles", "RegistrarTerminal" }.Contains(strOperacion)) { IncomingWebRequestContext incomingRequest = WebOperationContext.Current.IncomingRequest; WebHeaderCollection headers = incomingRequest.Headers; string strToken = headers["Authorization"]; if (strToken == null) { throw new Exception("La sessión del usuario no es válida. Debe reiniciar su sesión."); } strToken = strToken.Substring(7); servicioMantenimiento = unityContainer.Resolve <IMantenimientoService>(); servicioMantenimiento.ValidarRegistroAutenticacion(strToken, StaticRolePorUsuario.USUARIO_SISTEMA); } var httpRequest = (HttpRequestMessageProperty)request.Properties[HttpRequestMessageProperty.Name]; return(new { origin = httpRequest.Headers["Origin"], handlePreflight = httpRequest.Method.Equals("OPTIONS", StringComparison.InvariantCultureIgnoreCase) }); } catch (Exception ex) { throw new WebFaultException <string>(ex.Message, HttpStatusCode.InternalServerError); } }