Example #1
0
        public ProvideAndRegisterResponse ProvideAndRegisterDocumentSet(DocumentPackage package, EndpointAddress endpointAddress, string certThumbprint)
        {
            X509Certificate2 clientCert;
            ProvideAndRegisterDocumentSetRequest pandRXDSBRequest;

            //m_Logger = Log.For(this);
            try
            {
                //  create request
                pandRXDSBRequest = new ProvideAndRegisterDocumentSetRequest(package);

                // if this is https then get the client cert from the thumbprint
                clientCert = null;
                if ((endpointAddress.Uri.ToString().StartsWith("https")) && (!string.IsNullOrEmpty(certThumbprint)))
                {
                    clientCert = StaticHelpers.getCertFromThumbprint(certThumbprint);
                }
            }
            catch (Exception ex)
            {
                ProvideAndRegisterResponse pandRResponse = errorResponse(GlobalValues.CONST_ERROR_CODE_XDSRepositoryError, string.Format("error: {0}; stacktrace{1}", ex.Message, ex.StackTrace));
                return(pandRResponse);
            }

            return(exportXDSB(pandRXDSBRequest, endpointAddress, clientCert));
        }
Example #2
0
        //# region for diagnostics
        //private ILogger m_Logger;

        //private ILogger Logger
        //{
        //    get { return m_Logger; }
        //}
        //#endregion


        #region IExportDocumentSet Members
        public ProvideAndRegisterResponse ProvideAndRegisterDocumentSet(DocumentPackage package, string endpointUrl, string certThumbprint)
        {
            EndpointAddress endpointAddress;
            X509Certificate2 clientCert;
            ProvideAndRegisterDocumentSetRequest pandRXDSBRequest;
            //m_Logger = Log.For(this);
            try
            {
                // create request
                pandRXDSBRequest = new ProvideAndRegisterDocumentSetRequest(package);
                // get an endpoint from the url string
                endpointAddress = new EndpointAddress(endpointUrl);
                // if this is https then get the client cert from the thumbprint
                clientCert = null;
                if ((endpointUrl.StartsWith("https")) && (!string.IsNullOrEmpty(certThumbprint)))
                {
                    clientCert = StaticHelpers.getCertFromThumbprint(certThumbprint);
                }

            }
            catch (Exception ex)
            {
                ProvideAndRegisterResponse pandRResponse = errorResponse(GlobalValues.CONST_ERROR_CODE_XDSRepositoryError, string.Format("error: {0}; stacktrace{1}", ex.Message, ex.StackTrace));
                return pandRResponse;
            }

            return exportXDSB(pandRXDSBRequest, endpointAddress, clientCert);

        }
Example #3
0
        public ProvideAndRegisterResponse ProvideAndRegisterDocumentSet(DocumentPackage package, EndpointAddress endpointAddress, X509Certificate2 clientCert)
        {
            ProvideAndRegisterDocumentSetRequest pandRXDSBRequest;

            //m_Logger = Log.For(this);
            try
            {
                // create request
                pandRXDSBRequest = new ProvideAndRegisterDocumentSetRequest(package);
            }
            catch (Exception ex)
            {
                ProvideAndRegisterResponse pandRResponse = errorResponse(GlobalValues.CONST_ERROR_CODE_XDSRepositoryError, string.Format("error: {0}; stacktrace{1}", ex.Message, ex.StackTrace));
                return(pandRResponse);
            }

            return(exportXDSB(pandRXDSBRequest, endpointAddress, clientCert));
        }
Example #4
0
        private ProvideAndRegisterResponse exportXDSB(ProvideAndRegisterDocumentSetRequest pandRXDSBRequest, System.ServiceModel.EndpointAddress endpointAddress, X509Certificate2 clientCert)
        {
            ProvideAndRegisterResponse pandRResponse = null;

            // setup a default, we blew it, error response
            pandRResponse = errorResponse(GlobalValues.CONST_ERROR_CODE_XDSRepositoryError, "");
            XDSRepositoryClient xdsRepClient = null;

            try
            {
                // four basic steps
                // 1) build the message
                // 2) create the client proxy (using our own binding (instead of depending on a web.config))
                // 3) send the message and get back the response
                // 4) interrogate the repository/xdr recipient response and create a response object

                //Logger.Debug("begin exportXDSB");

                // 1) build the message
                // setup the WCF in and output messages
                WCF.Message   wcfInput, wcfOutput;
                XmlSerializer ser = new XmlSerializer(typeof(ProvideAndRegisterDocumentSetRequest));
                MemoryStream  ms  = new MemoryStream();
                ser.Serialize(ms, pandRXDSBRequest);
                ms.Position = 0;
                XmlReader requestReader = XmlReader.Create(ms);
                //string requestString = requestReader.ReadOuterXml();
                ms.Close();
                wcfInput = WCF.Message.CreateMessage(WCF.MessageVersion.Soap12WSAddressing10
                                                     , StaticHelpers.XDS_PANDR_ACTION // the action
                                                     , requestReader);                // the body

                wcfOutput = WCF.Message.CreateMessage(WCF.MessageVersion.Soap12WSAddressing10, "");

                // 2) create the client proxy (using our own binding (instead of depending on a web.config))

                WSHttpBinding myBinding = new WSHttpBinding();
                // some basic binding properties, regardless of transport
                myBinding.MaxBufferPoolSize                   = 524288;
                myBinding.MaxReceivedMessageSize              = 67108864;
                myBinding.MessageEncoding                     = WSMessageEncoding.Mtom;
                myBinding.ReaderQuotas.MaxArrayLength         = 16384;
                myBinding.ReaderQuotas.MaxBytesPerRead        = 8192;
                myBinding.ReaderQuotas.MaxDepth               = 32;
                myBinding.ReaderQuotas.MaxNameTableCharCount  = 46384;
                myBinding.ReaderQuotas.MaxStringContentLength = 20000;

                // tls specifics
                if (clientCert != null)
                {
                    myBinding.Security.Mode = SecurityMode.Transport;
                    myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
                    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
                }
                else
                {
                    myBinding.Security.Mode = SecurityMode.None;
                    myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
                }

                xdsRepClient = new XDSRepositoryClient(myBinding, endpointAddress);

                // tls certificate and callback
                if (clientCert != null)
                {
                    xdsRepClient.ClientCredentials.ClientCertificate.Certificate = clientCert;
                    ServicePointManager.ServerCertificateValidationCallback      = new RemoteCertificateValidationCallback(StaticHelpers.RemoteCertificateValidation);
                }

                // 3) send the message and get back the response
                //
                //Logger.Debug("sending message");
                //using (StreamWriter sw = new StreamWriter("tempDubugging"))
                //{
                //    sw.Write(string.Format("message to send: {0}", wcfInput.ToString()));
                //}
                wcfOutput = xdsRepClient.ProvideAndRegisterDocumentSet(wcfInput);

                // 4) interrogate the repository/xdr recipient response and create a response object
                pandRResponse = interrogateWCFResponse(wcfOutput);
            }
            catch (Exception ex)
            {
                // good point for debug logging
                //Logger.Error(string.Format("exportXDSB catches error: {0}; stack: {1}", ex.Message, ex.StackTrace));

                pandRResponse = errorResponse(GlobalValues.CONST_ERROR_CODE_XDSRepositoryError, string.Format("error: {0}; stacktrace{1}", ex.Message, ex.StackTrace));
                //throw;
            }
            if (xdsRepClient.State == CommunicationState.Opened)
            {
                xdsRepClient.Close();
            }
            //Logger.Debug("end exportXDSB");
            return(pandRResponse);
        }
Example #5
0
        private ProvideAndRegisterResponse exportXDSB(ProvideAndRegisterDocumentSetRequest pandRXDSBRequest, System.ServiceModel.EndpointAddress endpointAddress, X509Certificate2 clientCert)
        {
            ProvideAndRegisterResponse pandRResponse = null;
            // setup a default, we blew it, error response
            pandRResponse = errorResponse(GlobalValues.CONST_ERROR_CODE_XDSRepositoryError, "");
            XDSRepositoryClient xdsRepClient = null;
            try
            {
                // four basic steps
                // 1) build the message
                // 2) create the client proxy (using our own binding (instead of depending on a web.config))
                // 3) send the message and get back the response
                // 4) interrogate the repository/xdr recipient response and create a response object

                //Logger.Debug("begin exportXDSB");
               
                // 1) build the message
                // setup the WCF in and output messages
                WCF.Message wcfInput, wcfOutput;
                XmlSerializer ser = new XmlSerializer(typeof(ProvideAndRegisterDocumentSetRequest));
                MemoryStream ms = new MemoryStream();
                ser.Serialize(ms, pandRXDSBRequest);
                ms.Position = 0;
                XmlReader requestReader = XmlReader.Create(ms);
                //string requestString = requestReader.ReadOuterXml();
                ms.Close();
                wcfInput = WCF.Message.CreateMessage(WCF.MessageVersion.Soap12WSAddressing10
                    , StaticHelpers.XDS_PANDR_ACTION    // the action
                    , requestReader);      // the body

                wcfOutput = WCF.Message.CreateMessage(WCF.MessageVersion.Soap12WSAddressing10, "");

                // 2) create the client proxy (using our own binding (instead of depending on a web.config))
                
                WSHttpBinding myBinding = new WSHttpBinding();
                // some basic binding properties, regardless of transport
                myBinding.MaxBufferPoolSize = 524288; 
                myBinding.MaxReceivedMessageSize = 67108864;
                myBinding.MessageEncoding = WSMessageEncoding.Mtom;
                myBinding.ReaderQuotas.MaxArrayLength = 16384;
                myBinding.ReaderQuotas.MaxBytesPerRead = 8192;
                myBinding.ReaderQuotas.MaxDepth = 32;
                myBinding.ReaderQuotas.MaxNameTableCharCount = 46384;
                myBinding.ReaderQuotas.MaxStringContentLength = 20000;
                
                // tls specifics
                if (clientCert != null)
                {
                    myBinding.Security.Mode = SecurityMode.Transport;
                    myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
                    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
                }
                else
                {
                    myBinding.Security.Mode = SecurityMode.None;
                    myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
                }

                xdsRepClient = new XDSRepositoryClient(myBinding, endpointAddress);

                // tls certificate and callback
                if (clientCert != null)
                {
                    xdsRepClient.ClientCredentials.ClientCertificate.Certificate = clientCert;
                    ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(StaticHelpers.RemoteCertificateValidation);
                }

                // 3) send the message and get back the response
                // 
                //Logger.Debug("sending message");
                //using (StreamWriter sw = new StreamWriter("tempDubugging"))
                //{
                //    sw.Write(string.Format("message to send: {0}", wcfInput.ToString()));
                //}
                wcfOutput = xdsRepClient.ProvideAndRegisterDocumentSet(wcfInput);

                // 4) interrogate the repository/xdr recipient response and create a response object
                pandRResponse = interrogateWCFResponse(wcfOutput);
            }
            catch (Exception ex)
            {
                // good point for debug logging
                //Logger.Error(string.Format("exportXDSB catches error: {0}; stack: {1}", ex.Message, ex.StackTrace));

                pandRResponse = errorResponse(GlobalValues.CONST_ERROR_CODE_XDSRepositoryError, string.Format("error: {0}; stacktrace{1}", ex.Message, ex.StackTrace));
                //throw;
            }
            if (xdsRepClient.State == CommunicationState.Opened)
            {
                xdsRepClient.Close();
            }
            //Logger.Debug("end exportXDSB");
            return pandRResponse;
        }
Example #6
0
        public ProvideAndRegisterResponse ProvideAndRegisterDocumentSet(DocumentPackage package, EndpointAddress endpointAddress, X509Certificate2 clientCert)
        {
            ProvideAndRegisterDocumentSetRequest pandRXDSBRequest;
            //m_Logger = Log.For(this);
            try
            {
                // create request
                pandRXDSBRequest = new ProvideAndRegisterDocumentSetRequest(package);
            }
            catch (Exception ex)
            {
                ProvideAndRegisterResponse pandRResponse = errorResponse(GlobalValues.CONST_ERROR_CODE_XDSRepositoryError, string.Format("error: {0}; stacktrace{1}", ex.Message, ex.StackTrace));
                return pandRResponse;
            }

            return exportXDSB(pandRXDSBRequest, endpointAddress, clientCert);
        }