private void buttonLogin_Click(object sender, EventArgs e) { try { var wcfUrl = string.Format("net.tcp://{0}:{1}/Arxivar/Push", WcfHost, WcfPort); var logonRequest = new ArxLogonRequest { ClientId = AppName, ClientSecret = AppSecret, EnablePushEvents = true, Username = textBoxUsername.Text, Password = textBoxPassword.Text, }; _manager = new WCFConnectorManager(wcfUrl, logonRequest) { AutoChunk = true, AutoReconnect = true, Lang = "EN" }; _manager.ChannelOpening += _manager_ChannelOpening; _manager.ChannelOpened += _manager_ChannelOpened; try { Cursor = Cursors.WaitCursor; ArxLogOnResult logonResult = _manager.Logon(); if (logonResult.LogOnError == ArxLogOnErrorType.None) { Hide(); using (var fApp = new FormApplication(_manager)) { fApp.ShowDialog(); } Close(); } else { MessageBox.Show("Login error: " + logonResult.Message, "Login", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } finally { Cursor = Cursors.Default; _manager.ChannelOpening -= _manager_ChannelOpening; _manager.ChannelOpened -= _manager_ChannelOpened; } } catch (Exception exception) { MessageBox.Show(exception.Message, "Login", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private WCFConnectorManager GetWcf() { var logonRequest = new ArxLogonRequest { ClientId = _app_id, ClientSecret = _app_secret, EnablePushEvents = true, Username = _username, Password = _password, ImpersonateUserId = _impersonate_user_id.HasValue ? System.Convert.ToInt32(_impersonate_user_id) : default(int?) }; var manager = new WCFConnectorManager(_wcf_url, logonRequest) { AutoChunk = true, //default a true AutoReconnect = true, //default a true Lang = "IT" }; manager.ChannelOpening += _manager_ChannelOpening; manager.ChannelOpened += _manager_ChannelOpened; return(manager); }
private Task TaskWcf() { var task = new Task(() => { DispatcherHelper.UIDispatcher.Invoke(() => IsBusy = true); var wcfConnectorList = new List <WCFConnectorManager>(); var listTaskTest = new List <Task>(); try { DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() => { _logger.Info("Execute login test"); })); var arxLogonRequest = new ArxLogonRequest { Username = Username, Password = Password, LogonProviderId = DEFAULTLOGINPROVIDER, // Default ARXivar ClientId = CLIENTID, // Configured in AUTH service ClientSecret = CLIENTSECRET // Configured in AUTH service }; using (var wcfConn = new WCFConnectorManager(Url, new ArxAccessTokenLogonRequest())) { var logon = wcfConn.Logon(Url, arxLogonRequest); if (logon.LogOnError != ArxLogOnErrorType.None) { throw new Exception("Test login error: " + logon.LogOnError); } DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() => { _logger.Info("Create wcf connections.."); })); for (int i = 0; i < ThreadCount; i++) { DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() => { _logger.Info(string.Format(" - Create wcf connection {0} of {1}", (i + 1), ThreadCount)); })); var wcfConnThread = new WCFConnectorManager(Url, new ArxAccessTokenLogonRequest()); var logonThread = wcfConnThread.Logon(Url, arxLogonRequest); if (logonThread.LogOnError != ArxLogOnErrorType.None) { throw new Exception("Test login error: " + logon.LogOnError); } wcfConnectorList.Add(wcfConnThread); } DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() => { _logger.Info("Create procedure test"); })); for (int i = 0; i < ThreadCount; i++) { DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() => { _logger.Info(string.Format(" - Create procedure connection {0} of {1}", (i + 1), ThreadCount)); })); var taskClient = new Task(() => TestProcedureWcf(wcfConnectorList[i], string.Format("Thread{0}", i + 1)), TaskCreationOptions.LongRunning); taskClient.Start(); listTaskTest.Add(taskClient); Thread.Sleep(1000); } listTaskTest.ForEach(x => x.Wait()); DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() => { _logger.Info(string.Format("REPORT\r\nMASK\r\n{0}\r\nSTORE\r\n{1}\r\nSEARCH\r\n{2}\r\nF2\r\n{3}\r\nCycle\r\n{4}", TimeCalculator.EvaluateTime(_timeMask.ToArray()).ToString(), TimeCalculator.EvaluateTime(_timeStore.ToArray()).ToString(), TimeCalculator.EvaluateTime(_timeSearch.ToArray()).ToString(), TimeCalculator.EvaluateTime(_timeF2.ToArray()).ToString(), TimeCalculator.EvaluateTime(_timeTestProcedure.ToArray()).ToString() )); })); MessageBox.Show("Test procedure completed", "Execute completed", MessageBoxButton.OK, MessageBoxImage.Information); } } catch (Exception exception) { DispatcherHelper.UIDispatcher.BeginInvoke((Action)(() => { _logger.Error(exception.Message); })); MessageBox.Show(exception.Message, "Execute error", MessageBoxButton.OK, MessageBoxImage.Error); } finally { foreach (var item in wcfConnectorList) { item.Dispose(); } DispatcherHelper.UIDispatcher.Invoke(() => IsBusy = false); } }); return(task); }
private void buttonLogin_Click(object sender, EventArgs e) { try { //1) Creazione dell'URI del WCF di Arxivar Next var wcfUrl = string.Format("net.tcp://{0}:{1}/Arxivar/Push", WcfHost, WcfPort); //2) Mi creo l'oggetto del logon al WCF di Arxivar Next var logonRequest = new ArxLogonRequest { ClientId = AppName, //ci mettiamo il ClientID ClientSecret = AppSecret, //ci mettiamo il ClientSecret EnablePushEvents = true, //con EnablePushEvent a true, resto in "ascolto" di eventi dal WCF Username = textBoxUsername.Text, //username dell'utente in Arxivar Next Password = textBoxPassword.Text //password dell'utente in Arxivar Next }; //3) Istanzio l'oggetto "_manager" _manager = new WCFConnectorManager(wcfUrl, logonRequest) { AutoChunk = true, //Vogliamo l'auto-chunck automatico? Se sì, impostiamo a true AutoReconnect = true, //Vogliamo che il nosto connettore-custom verso Arxivar Next si riconnetta, in caso di problemi? Se sì, impostiamo a true Lang = "EN" }; //4) Con "channelOpening" e "channelOpened", resto in ascolto degli eventi sul canale _manager.ChannelOpening += _manager_ChannelOpening; _manager.ChannelOpened += _manager_ChannelOpened; try { //5) Proviamo a fare logon ad Arxivar Next ArxLogOnResult logonResult = _manager.Logon(); //6) Il logon ad Arxivar Next, è andato bene senza errori? if (logonResult.LogOnError == ArxLogOnErrorType.None) { //6A) OK, logon effettuato correttamente! MessageBox.Show("Login Ok!", "Login", MessageBoxButtons.OK, MessageBoxIcon.Information); WriteTextSafe("Login ok al WCF di Arxivar Next"); //6B) Nascondiamo il login e lanciamo la finestra principale Hide(); using (var fApp = new FormApplication(_manager)) { fApp.ShowDialog(); } Close(); } else { //6B) KO, logon fallito per qualche motivo... MessageBox.Show("Login fallito: " + logonResult.Message, "Login", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); WriteTextSafe("Login fallito al WCF di Arxivar Next"); } } finally { //Restiamo in ascolto degli eventi... _manager.ChannelOpening -= _manager_ChannelOpening; _manager.ChannelOpened -= _manager_ChannelOpened; } } catch (Exception exception) { //Qualcosa, prima di effettuare login è andato male MessageBox.Show(exception.Message, "Login", MessageBoxButtons.OK, MessageBoxIcon.Error); } }