经常会写一些测试用的片段 丢了又可惜 决定记下来
值类型检查
var list = new List<Type>() { typeof(Object), typeof(DBNull), typeof(Boolean), typeof(Char), typeof(SByte), typeof(Byte), typeof(Int16), typeof(UInt16), typeof(Int32), typeof(UInt32), typeof(Int64), typeof(UInt64), typeof(Single), typeof(Double), typeof(Decimal), typeof(DateTime), typeof(String), }; foreach(var item in list) { WL("Type: {0}, IsValueType: {1}", item.Name, item.IsValueType); }
IIS 管理 C:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll
创建 删除 修改 虚拟目录
static void UpdateIIS(string[] args) { using (var serverManager = new ServerManager()) { #if !DEBUG if (args.Length != 3) { Console.Write("参数不正确!"); return; } #endif Configuration config = serverManager.GetApplicationHostConfiguration(); ConfigurationSection sitesSection = config.GetSection("system.applicationHost/sites"); ConfigurationElementCollection sitesCollection = sitesSection.GetCollection(); #if !DEBUG ConfigurationElement siteElement = FindElement(sitesCollection, "site", "name", args[0]); #else ConfigurationElement siteElement = FindElement(sitesCollection, "site", "name", "LXT"); #endif if (siteElement == null) { Console.WriteLine("IIS 未找到名为 {0} 的站点", args[0]); return; } ConfigurationElementCollection siteCollection = siteElement.GetCollection(); #if !DEBUG Delete(siteCollection, args[1]); Create(siteCollection, args[1], args[2]); #else Delete(siteCollection, "/HeadImages"); Create(siteCollection, "/HeadImages", @"D:\Dev\IIS7"); #endif serverManager.CommitChanges(); } Console.WriteLine("IIS 更新完成"); } static ConfigurationElement FindElement(ConfigurationElementCollection collection, string elementTagName, params string[] keyValues) { foreach (ConfigurationElement element in collection) { if (String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase)) { bool matches = true; for (int i = 0; i < keyValues.Length; i += 2) { object o = element.GetAttributeValue(keyValues[i]); string value = null; if (o != null) { value = o.ToString(); } if (!String.Equals(value, keyValues[i + 1], StringComparison.OrdinalIgnoreCase)) { matches = false; break; } } if (matches) { return element; } } } return null; } static void Delete(ConfigurationElementCollection collection, string virtualDirectoryPath) { var oldApplication = collection.SingleOrDefault(e => e.Attributes["path"].Value.ToString() == "/"); if (oldApplication == null) return; var virtualDirectorys = oldApplication.GetCollection(); if (virtualDirectorys.Count == 1) return; var virtualDirectory = virtualDirectorys.SingleOrDefault(e => e.Attributes["path"].Value.ToString() == virtualDirectoryPath); if (virtualDirectory == null) return; virtualDirectorys.Remove(virtualDirectory); Console.WriteLine("IIS 删除 虚拟目录"); } static void Create(ConfigurationElementCollection collection, string virtualDirectoryPath, string physicalPath) { var application = collection.SingleOrDefault(e => e.Attributes["path"].Value.ToString() == virtualDirectoryPath); if (application == null) { application = collection.CreateElement("application"); application["path"] = virtualDirectoryPath; collection.Add(application); } application["applicationPool"] = "LXT"; ConfigurationElementCollection virtualDirectorys = application.GetCollection(); var virtualDirectory = virtualDirectorys.SingleOrDefault(e => e.Attributes["path"].Value.ToString() == "/"); if (virtualDirectory == null) { virtualDirectory = virtualDirectorys.CreateElement("virtualDirectory"); virtualDirectory["path"] = @"/"; virtualDirectorys.Add(virtualDirectory); Console.WriteLine("IIS 创建 应用程序"); } else Console.WriteLine("IIS 修改 应用程序"); virtualDirectory["physicalPath"] = physicalPath; }