Ejemplo n.º 1
0
        private void SvcStartStop_Click(object sender, EventArgs e)
        {
            if (serviceInstance != null && serviceInstance.Status == Status.Running)
            {
                serviceInstance.Stop();
            }
            else
            {
                this.RefreshSystemConfiguration();
                string serverIP = configuration.ContainsKey("ServerIP") ? configuration["ServerIP"] : null;
                int    port     = 0;
                if (configuration.ContainsKey("ServerPort"))
                {
                    Int32.TryParse(configuration["ServerPort"], out port);
                }
                string serviceRoot       = configuration.ContainsKey("ServiceRoot") ? configuration["ServiceRoot"] : null;
                string fileSavedPath     = configuration.ContainsKey("FileSavedPath") ? configuration["FileSavedPath"] : null;
                string cookieName        = configuration.ContainsKey("CookieName") ? configuration["CookieName"] : null;
                int    cookieExpiredTime = 3600;
                if (configuration.ContainsKey("CookieExpiredTime"))
                {
                    Int32.TryParse(configuration["CookieExpiredTime"], out cookieExpiredTime);
                }
                string controllersAssembly = configuration.ContainsKey("ControllersAssembly") ? configuration["ControllersAssembly"] : null;

                ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings["TQ"];
                string conStr = setting != null && setting.ConnectionString != String.Empty ? setting.ConnectionString : null;

                //请求需要认证并且没有经过认证时的处理代码
                string notAuthorized = configuration.ContainsKey("NotAuthorized") ? configuration["NotAuthorized"] : null;

                //用户自定义配置
                Dictionary <string, object> serConfig = new Dictionary <string, object>();
                //支持跨多个域
                List <string> originHosts = new List <string>();
                foreach (KeyValuePair <string, string> config in configuration)
                {
                    string key = config.Key.ToUpper();
                    if (key.StartsWith("UDF-"))
                    {
                        serConfig.Add(config.Key.Substring(4), config.Value);
                    }
                    else if (key.StartsWith("ORIGINHOST"))
                    {
                        originHosts.Add(config.Value);
                    }
                }

                //创建服务实例
                serviceInstance = new SapiService(serverIP, port, rootPath: serviceRoot,
                                                  originHosts: originHosts, fileServerPath: fileSavedPath, cookieName: cookieName,
                                                  cookieExpires: cookieExpiredTime, controllersAssembly: controllersAssembly,
                                                  connectionString: conStr, notAuthorized: notAuthorized, serverConfig: serConfig);
                //初始化服务
                serviceInstance.Initialize();
                if (serviceInstance.Status == Status.NotInitialized)
                {
                    Log.Comment(CommentType.Error, "服务启动失败。");
                }
                else
                {
                    //开辟新的线程运行服务
                    serviceThread = new Thread(serviceInstance.Process <UserSession>);
                    serviceThread.Start();

                    Log.Comment(CommentType.Info, string.Format("服务正在运行。"));
                }
            }
        }
Ejemplo n.º 2
0
        private void SvcStartStop_Click(object sender, EventArgs e)
        {
            if (serviceInstance != null && serviceInstance.Status == Status.Running)
                serviceInstance.Stop();
            else
            {
                this.RefreshSystemConfiguration();
                string serverIP = configuration.ContainsKey("ServerIP") ? configuration["ServerIP"] : null;
                int port = 0;
                if (configuration.ContainsKey("ServerPort"))
                    Int32.TryParse(configuration["ServerPort"], out port);
                string serviceRoot = configuration.ContainsKey("ServiceRoot") ? configuration["ServiceRoot"] : null;
                string fileSavedPath = configuration.ContainsKey("FileSavedPath") ? configuration["FileSavedPath"] : null;
                string cookieName = configuration.ContainsKey("CookieName") ? configuration["CookieName"] : null;
                int cookieExpiredTime = 3600;
                if (configuration.ContainsKey("CookieExpiredTime"))
                    Int32.TryParse(configuration["CookieExpiredTime"], out cookieExpiredTime);
                string controllersAssembly = configuration.ContainsKey("ControllersAssembly") ? configuration["ControllersAssembly"] : null;

                ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings["TQ"];
                string conStr = setting != null && setting.ConnectionString != String.Empty ? setting.ConnectionString : null;

                //请求需要认证并且没有经过认证时的处理代码
                string notAuthorized = configuration.ContainsKey("NotAuthorized") ? configuration["NotAuthorized"] : null;

                //用户自定义配置
                Dictionary<string, object> serConfig = new Dictionary<string, object>();
                //支持跨多个域
                List<string> originHosts = new List<string>();
                foreach (KeyValuePair<string, string> config in configuration)
                {
                    string key = config.Key.ToUpper();
                    if (key.StartsWith("UDF-"))
                        serConfig.Add(config.Key.Substring(4), config.Value);
                    else if (key.StartsWith("ORIGINHOST"))
                        originHosts.Add(config.Value);
                }

                //创建服务实例
                serviceInstance = new SapiService(serverIP, port, rootPath: serviceRoot,
                    originHosts: originHosts, fileServerPath: fileSavedPath, cookieName: cookieName,
                    cookieExpires: cookieExpiredTime, controllersAssembly: controllersAssembly,
                    connectionString: conStr, notAuthorized: notAuthorized, serverConfig: serConfig);
                //初始化服务
                serviceInstance.Initialize();
                if (serviceInstance.Status == Status.NotInitialized)
                {
                    Log.Comment(CommentType.Error, "服务启动失败。");
                }
                else
                {
                    //开辟新的线程运行服务
                    serviceThread = new Thread(serviceInstance.Process<UserSession>);
                    serviceThread.Start();

                    Log.Comment(CommentType.Info, string.Format("服务正在运行。"));
                }
            }
        }