Пример #1
0
        public void Shutdown()
        {
            ClientProxyBase.Faulted -= ClientProxyBase_Faulted;

            mFaultHandlerStopEvent = new AutoResetEvent(false);
            mFaultHandlerRunning   = false;
            mFaultHandlerEvent.Set();
            mFaultHandlerStopEvent.WaitOne();
            mFaultHandlerStopEvent.Dispose();
            mFaultHandlerEvent.Dispose();

            ClientProxyBase.Close();
        }
Пример #2
0
        protected void Application_End()
        {
            ClientProxyBase.Faulted -= ClientProxyBase_Faulted;

            mFaultHandlerStopEvent = new AutoResetEvent(false);
            mFaultHandlerRunning   = false;
            mFaultHandlerEvent.Set();
            mFaultHandlerStopEvent.WaitOne();
            mFaultHandlerStopEvent.Dispose();
            mFaultHandlerEvent.Dispose();

            ClientProxyBase.Close();

            if (LOGGER.IsInfoEnabled)
            {
                LOGGER.Info("GLOBAL_ASAX, application stop.");
            }
        }
Пример #3
0
 public void Initialize()
 {
     // initialize communication system
     ClientProxyBase.SourceId = ClientIdGenerator.GenerateId(ClientTypeEnum.External);
     ClientProxyBase.ConfigureClientProxyForCallback(new ConfigurationForCallback("TcpEndpointForCallbackMode"));
     ClientProxyBase.Faulted += ClientProxyBase_Faulted;
     try
     {
         ClientProxyBase.Open();
     }
     catch (Exception ex)
     {
         LOGGER.Error(string.Format("Failed to open connection. Reason: {0}", ex.Message));
         mFaultHandlerEvent.Set();
     }
     mFaultHandlerThread      = new Thread(new ThreadStart(FaultHandlerThreadMain));
     mFaultHandlerThread.Name = "FaultHandlerThread";
     mFaultHandlerThread.Start();
 }
Пример #4
0
 private void FaultHandlerThreadMain()
 {
     while (mFaultHandlerRunning)
     {
         mFaultHandlerEvent.WaitOne();
         if (mFaultHandlerRunning)
         {
             try
             {
                 ClientProxyBase.Open();
             }
             catch (Exception ex)
             {
                 LOGGER.Error(string.Format("Failed to open connection. Reason: {0}", ex.Message));
                 Thread.Sleep(1000);
             }
         }
     }
     mFaultHandlerStopEvent.Set();
 }
        public void Initialize()
        {
            // create wcf binding and endpoint address
            ClientProxyBase.SourceId = ClientIdGenerator.GenerateId(ClientTypeEnum.External);
            NetTcpBinding binding = new NetTcpBinding(SecurityMode.None);

            binding.Name                   = "TcpEndpoint";
            binding.OpenTimeout            = TimeSpan.FromMinutes(1);
            binding.CloseTimeout           = TimeSpan.FromMinutes(1);
            binding.ReceiveTimeout         = TimeSpan.FromMinutes(10);
            binding.SendTimeout            = TimeSpan.FromMinutes(10);
            binding.MaxBufferSize          = 2147483647;
            binding.MaxReceivedMessageSize = 2147483647;
            binding.TransferMode           = TransferMode.Buffered;
            binding.ReaderQuotas.MaxDepth  = 2147483647;
            binding.ReaderQuotas.MaxStringContentLength = 2147483647;
            binding.ReaderQuotas.MaxArrayLength         = 2147483647;
            binding.ReaderQuotas.MaxBytesPerRead        = 2147483647;
            binding.ReaderQuotas.MaxNameTableCharCount  = 2147483647;
            binding.Security.Mode = SecurityMode.None;
            binding.Security.Message.ClientCredentialType   = MessageCredentialType.None;
            binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Certificate;

            EndpointAddress endpoint = new EndpointAddress(ConfigurationManager.AppSettings["SesameServiceUrl"]);

            // initialize communication system
            ClientProxyBase.ConfigureClientProxyForCallback(new ConfigurationForCallback(binding, endpoint));
            ClientProxyBase.Faulted += ClientProxyBase_Faulted;
            try
            {
                ClientProxyBase.Open();
            }
            catch (Exception ex)
            {
                LOGGER.Error(string.Format("Failed to open connection. Reason: {0}", ex.Message));
                mFaultHandlerEvent.Set();
            }
            mFaultHandlerThread      = new Thread(new ThreadStart(FaultHandlerThreadMain));
            mFaultHandlerThread.Name = "FaultHandlerThread";
            mFaultHandlerThread.Start();
        }
Пример #6
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            ClientProxyBase.SourceId = ClientIdGenerator.GenerateId(ClientTypeEnum.External);
            ClientProxyBase.ConfigureClientProxyForCallback(new ConfigurationForCallback("TcpEndpointForCallbackMode"));
            ClientProxyBase.Faulted += ClientProxyBase_Faulted;
            try
            {
                ClientProxyBase.Open();
            }
            catch (Exception ex)
            {
                LOGGER.Error(string.Format("Failed to open connection. Reason: {0}", ex.Message));
                mFaultHandlerEvent.Set();
            }
            mFaultHandlerThread      = new Thread(new ThreadStart(FaultHandlerThreadMain));
            mFaultHandlerThread.Name = "FaultHandlerThread";
            mFaultHandlerThread.Start();
        }
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app,
                              Microsoft.Extensions.Hosting.IHostApplicationLifetime applicationLifetime,
                              IWebHostEnvironment env,
                              ILoggerFactory loggerFactory,
                              IConfiguration config)
        {
            // initialize logger
            loggerFactory.AddLog4Net();
            Forge.Logging.LogManager.LOGGER = Forge.Logging.Log4net.Log4NetManager.Instance;
            Forge.Logging.LogUtils.LogAll();
            LOGGER = LogManager.GetLogger(typeof(Startup));

            // bind configuration to POCO
            SesameConfiguration.Instance = config.GetSection("SesameConfiguration").Get <SesameConfiguration>();

            // create wcf binding and endpoint address
            ClientProxyBase.SourceId = ClientIdGenerator.GenerateId(ClientTypeEnum.External);
            NetTcpBinding binding = new NetTcpBinding(SecurityMode.None);

            binding.Name                   = "TcpEndpoint";
            binding.OpenTimeout            = TimeSpan.FromMinutes(1);
            binding.CloseTimeout           = TimeSpan.FromMinutes(1);
            binding.ReceiveTimeout         = TimeSpan.FromMinutes(10);
            binding.SendTimeout            = TimeSpan.FromMinutes(10);
            binding.MaxBufferSize          = 2147483647;
            binding.MaxReceivedMessageSize = 2147483647;
            binding.TransferMode           = TransferMode.Buffered;
            binding.ReaderQuotas.MaxDepth  = 2147483647;
            binding.ReaderQuotas.MaxStringContentLength = 2147483647;
            binding.ReaderQuotas.MaxArrayLength         = 2147483647;
            binding.ReaderQuotas.MaxBytesPerRead        = 2147483647;
            binding.ReaderQuotas.MaxNameTableCharCount  = 2147483647;
            binding.Security.Mode = SecurityMode.None;
            binding.Security.Message.ClientCredentialType   = MessageCredentialType.None;
            binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Certificate;

            EndpointAddress endpoint = new EndpointAddress(SesameConfiguration.Instance.SesameServiceUrl);

            // initialize communication system
            ClientProxyBase.ConfigureClientProxyForCallback(new ConfigurationForCallback(binding, endpoint));
            ClientProxyBase.Faulted += ClientProxyBase_Faulted;
            try
            {
                ClientProxyBase.Open();
            }
            catch (Exception ex)
            {
                LOGGER.Error(string.Format("Failed to open connection. Reason: {0}", ex.Message));
                mFaultHandlerEvent.Set();
            }
            mFaultHandlerThread      = new Thread(new ThreadStart(FaultHandlerThreadMain));
            mFaultHandlerThread.Name = "FaultHandlerThread";
            mFaultHandlerThread.Start();

            // register shutdown
            applicationLifetime.ApplicationStopping.Register(OnShutdown);

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapRazorPages();
            });
        }