You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
240 lines
7.6 KiB
C#
240 lines
7.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Xml;
|
|
using System.Xml.Serialization;
|
|
|
|
namespace KevDrawServer
|
|
{
|
|
public class WebConfig
|
|
{
|
|
private static string mapDirectory = string.Empty;
|
|
|
|
/// <summary>
|
|
/// Gets the 图形存放根目录.
|
|
/// </summary>
|
|
public static string MapDirectory
|
|
{
|
|
get
|
|
{
|
|
if (string.IsNullOrEmpty(mapDirectory))
|
|
{
|
|
Open();
|
|
}
|
|
if (!Directory.Exists(mapDirectory))
|
|
{
|
|
Directory.CreateDirectory(mapDirectory);
|
|
}
|
|
return mapDirectory;
|
|
}
|
|
set
|
|
{
|
|
mapDirectory = value;
|
|
}
|
|
}
|
|
private static string servicePort;
|
|
public static string ServicePort{
|
|
get
|
|
{
|
|
if (string.IsNullOrEmpty(servicePort))
|
|
{
|
|
Open();
|
|
}
|
|
return servicePort;
|
|
}
|
|
set
|
|
{
|
|
servicePort = value;
|
|
}
|
|
}
|
|
|
|
private static string tempDirectory = string.Empty;
|
|
/// <summary>
|
|
/// 临时目录
|
|
/// </summary>
|
|
public static string TempDirectory
|
|
{
|
|
get
|
|
{
|
|
if(string.IsNullOrEmpty(tempDirectory))
|
|
{
|
|
tempDirectory = Path.Combine(HtmlRoot, "Temp");
|
|
}
|
|
if (!Directory.Exists(tempDirectory))
|
|
{
|
|
Directory.CreateDirectory(tempDirectory);
|
|
}
|
|
return tempDirectory;
|
|
//DirectoryInfo diParent = Directory.GetParent(StartupPath.TrimEnd('\\'));
|
|
//string strDir = Path.Combine(diParent.FullName, "TestVue");
|
|
//if (!Directory.Exists(strDir))
|
|
//{
|
|
// try
|
|
// {
|
|
// Directory.CreateDirectory(strDir);
|
|
// }
|
|
// catch (Exception ex)
|
|
// {
|
|
// return string.Empty;
|
|
// }
|
|
//}
|
|
//return strDir;
|
|
}
|
|
}
|
|
|
|
public static string ConfigFile
|
|
{
|
|
get
|
|
{
|
|
var path = StartupPath;
|
|
return Path.Combine(path, "KevWebConfig.xml");
|
|
}
|
|
}//set;
|
|
private static string startupPath = string.Empty;
|
|
|
|
/// <summary>
|
|
/// Gets or sets 服务启动目录.
|
|
/// </summary>
|
|
public static string StartupPath
|
|
{
|
|
get
|
|
{
|
|
if (string.IsNullOrEmpty(startupPath))
|
|
{
|
|
startupPath = System.AppDomain.CurrentDomain.BaseDirectory;
|
|
}
|
|
return startupPath;
|
|
}
|
|
set => startupPath = value;
|
|
}
|
|
private static string htmlRoot = string.Empty;
|
|
/// <summary>
|
|
/// 静态页面根目录
|
|
/// </summary>
|
|
public static string HtmlRoot
|
|
{
|
|
get
|
|
{
|
|
if (string.IsNullOrEmpty(htmlRoot))
|
|
{
|
|
Open();
|
|
}
|
|
|
|
return htmlRoot;
|
|
}
|
|
}
|
|
|
|
//private static WebConfig instance;
|
|
/// <summary>
|
|
/// Prevents a default instance of the <see cref="WebConfig"/> class from being created.
|
|
/// </summary>
|
|
private WebConfig()
|
|
{
|
|
Open();
|
|
}
|
|
//public static WebConfig Instance
|
|
//{
|
|
// get
|
|
// {
|
|
// if (instance == null)
|
|
// {
|
|
// instance = new WebConfig();
|
|
// if (instance.Open() == false)
|
|
// {
|
|
// instance.Save();
|
|
// }
|
|
// }
|
|
// return instance;
|
|
// }
|
|
// set
|
|
// {
|
|
// instance = value;
|
|
// }
|
|
//}
|
|
/// <summary>
|
|
/// 打开配置文件.
|
|
/// </summary>
|
|
/// <returns>是否成功</returns>
|
|
public static bool Open()
|
|
{
|
|
string strFile = ConfigFile;
|
|
if (string.IsNullOrEmpty(strFile) || !File.Exists(strFile))
|
|
{
|
|
Save();
|
|
}
|
|
try
|
|
{
|
|
using (StreamReader reader = new StreamReader(strFile))
|
|
{
|
|
//XmlDocument读取xml文件
|
|
XmlDocument xmlDoc = new XmlDocument();
|
|
xmlDoc.Load(reader);
|
|
//获取xml根节点
|
|
XmlNode xmlRoot = xmlDoc.DocumentElement;
|
|
MapDirectory = xmlRoot.SelectSingleNode("MapDirectory").InnerText;
|
|
ServicePort = xmlRoot.SelectSingleNode("ServicePort").InnerText;
|
|
htmlRoot = xmlRoot.SelectSingleNode("StaticModule").InnerText;
|
|
//XmlSerializer xmlSerializer = new XmlSerializer(typeof(WebConfig));
|
|
//instance = xmlSerializer.Deserialize(reader) as WebConfig;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
/// <summary>
|
|
/// 保存配置文件
|
|
/// </summary>
|
|
public static void Save()
|
|
{
|
|
string strFile = ConfigFile;
|
|
if (!File.Exists(strFile))
|
|
{
|
|
File.Create(strFile).Close();
|
|
}
|
|
using (StreamWriter writer = new StreamWriter(strFile))
|
|
{
|
|
DirectoryInfo di = new DirectoryInfo(StartupPath);
|
|
string strServerPath = di.Parent.Parent.FullName;
|
|
htmlRoot = Path.Combine(strServerPath, "HtmlRoot");
|
|
|
|
servicePort = "8080";
|
|
mapDirectory = Path.Combine(HtmlRoot, "Maps");
|
|
XmlDocument xmlDoc = new XmlDocument();
|
|
//加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
|
|
XmlDeclaration xmlDeclar;
|
|
xmlDeclar = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
|
|
xmlDoc.AppendChild(xmlDeclar);
|
|
//加入根元素
|
|
XmlElement xmlElement = xmlDoc.CreateElement("", "WebConfig", "");
|
|
xmlDoc.AppendChild(xmlElement);
|
|
//添加节点
|
|
XmlNode root = xmlDoc.SelectSingleNode("WebConfig");
|
|
// 静态模块路径
|
|
XmlElement xeStatic = xmlDoc.CreateElement("StaticModule");
|
|
xeStatic.InnerText = htmlRoot;
|
|
root.AppendChild(xeStatic);
|
|
// 图形数据目录
|
|
XmlElement xe1 = xmlDoc.CreateElement("MapDirectory");
|
|
xe1.InnerText = mapDirectory;
|
|
root.AppendChild(xe1);
|
|
// 服务端口
|
|
XmlElement xe2 = xmlDoc.CreateElement("ServicePort");
|
|
xe2.InnerText = servicePort;
|
|
root.AppendChild(xe2);
|
|
|
|
xmlDoc.Save(writer);
|
|
//XmlSerializer xmlSerializer = new XmlSerializer(typeof(WebConfig));
|
|
//XmlSerializerNamespaces nameSpace = new XmlSerializerNamespaces();
|
|
//nameSpace.Add(string.Empty, string.Empty);
|
|
//xmlSerializer.Serialize(writer, instance, nameSpace);
|
|
}
|
|
}
|
|
}
|
|
}
|