/// <summary> /// Ejecuta un servicio de negocio. /// Si se produce el error: /// The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG)) /// Se debe a un error que lanza una llamada asincrona en modo debug /// </summary> /// <param name="req">Clase que imlementa la interfaz IServiceContract datos de entrada para la ejecución del servicio.</param> /// <returns>Clase que imlementa la interfaz IServiceContract con datos de respuesta del servicio.</returns> /// <returns>response</returns> public TResponse ExecuteService <TRequest, TResponse>(TRequest req) where TRequest : IServiceContract where TResponse : IServiceContract, new() { InitHost(); req.InitializeHostContextInformation(); ExecuteServiceRequest wcfReq = new ExecuteServiceRequest(); ExecuteServiceResponse wcfRes = null; JsonSerializerSettings settings = null; wcfReq.serviceName = req.ServiceName; wcfReq.providerName = _ServiceMetadataProviderName; wcfReq.jsonRequets = Newtonsoft.Json.JsonConvert.SerializeObject(req, Formatting.None); using (FwkServiceClient svcProxy = new WCFServiceReference.FwkServiceClient(binding, address)) { svcProxy.Open(); settings = new JsonSerializerSettings(); settings.Formatting = Formatting.None; wcfRes = svcProxy.ExecuteService(wcfReq); } TResponse response = Newtonsoft.Json.JsonConvert.DeserializeObject <TResponse>(wcfRes.ExecuteServiceResult, settings); response.InitializeHostContextInformation(); return(response); }
/// <summary> /// Ejecuta un servicio de negocio. /// Si se produce el error: /// The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG)) /// Se debe a un error que lanza una llamada asincrona en modo debug /// </summary> /// <param name="req">Clase que imlementa la interfaz IServiceContract datos de entrada para la ejecución del servicio.</param> /// <returns>Clase que imlementa la interfaz IServiceContract con datos de respuesta del servicio.</returns> /// <returns>response</returns> public virtual TResponse ExecuteService <TRequest, TResponse>(TRequest req) where TRequest : IServiceContract where TResponse : IServiceContract, new() { InitilaizeBinding(); TResponse response; req.InitializeHostContextInformation(); ExecuteServiceRequest wcfReq = new ExecuteServiceRequest(); ExecuteServiceResponse wcfRes = null; wcfReq.serviceName = req.ServiceName; wcfReq.providerName = _ServiceMetadataProviderName; wcfReq.jsonRequets = Fwk.HelperFunctions.SerializationFunctions.SerializeObjectToJson <TRequest>(req); //wcfReq.xmlRequets = Fwk.HelperFunctions.SerializationFunctions.SerializeToXml(req); var channelFactory = new ChannelFactory <IFwkService>(binding, address); IFwkService client = null; try { client = channelFactory.CreateChannel(); wcfRes = client.ExecuteService(wcfReq); ((ICommunicationObject)client).Close(); } catch (Exception ex) { if (client != null) { ((ICommunicationObject)client).Abort(); } response = (TResponse)Fwk.HelperFunctions.ReflectionFunctions.CreateInstance <TResponse>(); response.Error = new ServiceError(); response.Error.Class = "WCFRrapperBase"; response.Error.Message = Fwk.Exceptions.ExceptionHelper.GetAllMessageException(ex); response.InitializeHostContextInformation(); return(response); } response = (TResponse)Fwk.HelperFunctions.SerializationFunctions.DeSerializeObjectFromJson <TResponse>(wcfRes.ExecuteServiceResult); //TResponse response = (TResponse)Fwk.HelperFunction s.SerializationFunctions.DeserializeFromXml(typeof(TResponse), wcfRes.ExecuteServiceResult); response.InitializeHostContextInformation(); return(response); }
/// <summary> /// Ejecuta un servicio de negocio. /// Si se produce el error: /// The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG)) /// Se debe a un error que lanza una llamada asincrona en modo debug /// </summary> /// <param name="req">Clase que imlementa la interfaz IServiceContract datos de entrada para la ejecución del servicio.</param> /// <returns>Clase que imlementa la interfaz IServiceContract con datos de respuesta del servicio.</returns> /// <returns>response</returns> public TResponse ExecuteService <TRequest, TResponse>(TRequest req) where TRequest : IServiceContract where TResponse : IServiceContract, new() { InitilaizeBinding(); req.InitializeHostContextInformation(); ExecuteServiceRequest wcfReq = new ExecuteServiceRequest(); ExecuteServiceResponse wcfRes = null; wcfReq.serviceName = req.ServiceName; wcfReq.providerName = _ServiceMetadataProviderName; wcfReq.jsonRequets = Fwk.HelperFunctions.SerializationFunctions.SerializeObjectToJson <TRequest>(req); var channelFactory = new ChannelFactory <IFwkService>(binding, address); IFwkService client = null; try { client = channelFactory.CreateChannel(); client.ExecuteService(wcfReq); ((ICommunicationObject)client).Close(); } catch (Exception ex) { if (client != null) { ((ICommunicationObject)client).Abort(); } throw ex; } TResponse response = (TResponse)Fwk.HelperFunctions.SerializationFunctions.DeSerializeObjectFromJson <TResponse>(wcfRes.ExecuteServiceResult); response.InitializeHostContextInformation(); return(response); }