博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Web Server 启动工具
阅读量:4512 次
发布时间:2019-06-08

本文共 7363 字,大约阅读时间需要 24 分钟。

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using Microsoft.VisualBasic;using System.Runtime.Serialization.Json;using System.IO;namespace WebDevTool{    public partial class frmMain : Form    {        private const string AppName = "WebDevTool";        private const string SectionName = "WebServers";        private const string ConfigSectionName = "Config";        private const string WebDevPathKey = "WebServerPath";        public frmMain()        {            InitializeComponent();                    }        public void RefreshUI()        {            if (!string.IsNullOrEmpty(GetWebDevServerPath()))                txtExePath.Text = GetWebDevServerPath();            lstServers.Items.Clear();            var servers = GetAllWebServers();            foreach (var server in servers)            {                lstServers.Items.Add(server.Name);            }            lstServers.Refresh();            ClearInput();            lstServers.SelectedIndex = -1;        }        public void ClearInput()        {            txtServerName.Clear();            txtServerPort.Text = "80";            txtVPath.Clear();            txtServerDirectory.Clear();        }        public void SaveWebDevServerPath(string path)        {            Interaction.SaveSetting(AppName, ConfigSectionName, WebDevPathKey, path);        }        public string GetWebDevServerPath()        {            return Interaction.GetSetting(AppName, ConfigSectionName, WebDevPathKey);        }        public void SaveSetting(string key, string value)        {            Interaction.SaveSetting(AppName, SectionName, key, value);         }        public string GetSetting(string key)        {            return Interaction.GetSetting(AppName, SectionName, key);        }        public void DeleteSetting(string key)        {            Interaction.DeleteSetting(AppName, SectionName, key);        }        public List
GetAllWebServers() { var keys = new List
(); var settings = Interaction.GetAllSettings(AppName, SectionName); if (settings != null) { for (var i = 0; i <= settings.GetUpperBound(0); i++) { try { var server = JsonHelper.JsonDeserialize
(settings[i, 1]); keys.Add(server); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } } return keys; } private void btnSelectExe_Click(object sender, EventArgs e) { if (System.IO.File.Exists(txtExePath.Text)) { openFileDialog1.FileName = txtExePath.Text; } if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { txtExePath.Text = openFileDialog1.FileName; SaveWebDevServerPath(openFileDialog1.FileName); } } private void btnPathSelect_Click(object sender, EventArgs e) { if (System.IO.Directory.Exists(txtServerDirectory.Text)) { folderBrowserDialog1.SelectedPath = txtServerDirectory.Text; } if (folderBrowserDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { txtServerDirectory.Text = folderBrowserDialog1.SelectedPath; } } private void frmMain_Load(object sender, EventArgs e) { RefreshUI(); } private void btnDelete_Click(object sender, EventArgs e) { DeleteSetting(lstServers.Text); RefreshUI(); } private void lstServers_SelectedIndexChanged(object sender, EventArgs e) { if (lstServers.SelectedIndex <0) { ClearInput(); btnDelete.Enabled = false; btnStart.Enabled = false; return; } btnStart.Enabled = true; btnDelete.Enabled = true; ClearInput(); try { var server = JsonHelper.JsonDeserialize
(GetSetting(lstServers.Text)); txtServerName.Text = server.Name; txtServerPort.Text = server.Port; txtVPath.Text = server.HostPath; txtServerDirectory.Text = server.Directory; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } private void btnSave_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(txtServerName.Text)) return; if (string.IsNullOrWhiteSpace(txtServerPort.Text)) return; if (string.IsNullOrWhiteSpace(txtServerDirectory.Text)) return; try { int.Parse(txtServerPort.Text); } catch (Exception) { return; } if (!System.IO.Directory.Exists(txtServerDirectory.Text)) return; var webServer = new WebServer(); webServer.Name = txtServerName.Text; webServer.Port = txtServerPort.Text; webServer.HostPath = txtVPath.Text; webServer.Directory = txtServerDirectory.Text; SaveSetting(webServer.Name, JsonHelper.JsonSerialize
(webServer)); RefreshUI(); MessageBox.Show("Save Successfully!"); } private void btnNew_Click(object sender, EventArgs e) { lstServers.SelectedIndex = -1; } private void btnStart_Click(object sender, EventArgs e) { if(lstServers.SelectedIndex <0) return ; var server = JsonHelper.JsonDeserialize
(GetSetting(lstServers.Text)); if (!System.IO.Directory.Exists(server.Directory)) { MessageBox.Show("Web Server Directory does not exist!"); return; } var cmd = string.Format("\"{0}\" /port:{1} /path:\"{2}\" /vpath:\"{3}\"", GetWebDevServerPath(), server.Port, server.Directory, server.HostPath); try { Interaction.Shell(cmd); } catch (Exception) { //MessageBox.Show("Cannot start the server on port {0}, maybe the port {0} has been used.", server.Port); } } } public class WebServer { public string Name { get; set; } public string Port { get; set; } public string HostPath { get; set; } public string Directory { get; set; } } public class JsonHelper { public static string JsonSerialize
(T t) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); MemoryStream ms = new MemoryStream(); ser.WriteObject(ms, t); string jsonString = Encoding.UTF8.GetString(ms.ToArray()); ms.Close(); return jsonString; } public static T JsonDeserialize
(string jsonString) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); T obj = (T)ser.ReadObject(ms); return obj; } }}

 

转载于:https://www.cnblogs.com/nanfei/archive/2013/02/17/2914198.html

你可能感兴趣的文章
Centos7 忘记密码的情况下,修改root密码
查看>>
第九章:testng——在Android Eclipse ADT 中 在线安装步骤
查看>>
洛谷 - P1063 - 能量项链 - 区间dp
查看>>
Turn the corner (三分)
查看>>
srs2录制flv文件metadata不准确
查看>>
P2512 [HAOI2008]糖果传递
查看>>
P3224 [HNOI2012]永无乡(平衡树合并)
查看>>
sql2000远程连接失败
查看>>
substring(start,stop)用于提取字符串中介于两个指定下标之间的字符。
查看>>
第三百零六天 how can I 坚持
查看>>
WEB Fuzz中需要关注的7种响应
查看>>
§1.2.1绝对值不等式第10题第二小问
查看>>
dip
查看>>
利用INI文件实现界面无闪烁多语言切换
查看>>
sql语句的一种组织方法
查看>>
最精简的IOCP封装
查看>>
Jmeter-JDBC连接测试
查看>>
HDU 4344
查看>>
nyoj43 24 Point game(DFS)
查看>>
RedisTemplate操作Redis
查看>>