C#管理控制IIS7的方法
转自
http://www.lob.cn/jq/csyy/7285.shtml
把在找到正确方法前遇到的挫折也拿出来与大家分享,相信不少朋友从iis6到iis7的过渡中也和我存在同样的疑问,开始的时候我需要在IIS7下创建虚拟目录,用的是DirecotryEntry这个类,怎么也不能,总会报错[System.Runtime.InteropServices.COMException]{"未知错误(0x80005000)"} 这个错误。
private static void TestDirectoryEntry() { try { string path = "IIsWebService://" + System.Environment.MachineName + "/W3SVC"; System.Collections.ArrayList webSite = new System.Collections.ArrayList(); DirectoryEntry iis = new DirectoryEntry("IIS://localhost/W3SVC"); if (iis != null) { foreach (DirectoryEntry entry in iis.Children) { if (string.Compare(entry.SchemaClassName, "IIsWebServer") == 0) { Console.WriteLine(entry.Name); Console.WriteLine(entry.Properties["ServerComment"].Value.ToString()); Console.WriteLine(entry.Path); } Console.WriteLine(); } } } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); } }
后来疯狂地找原因 '更多.net教程和源代码 来自乐博网lob.cn
第一步,找机子上安全方面的问题。我IIS7是装在Windows server2008上的。我取消了系统的UAC。并用“以管理员身份”运行的该程序。结果还是不行。
第二步,在网上找有没有人跟我碰到相同的问题。果然!很多人都有,网上给的解决方案是:
The IIS Metabase and IIS6 Configuration Compatibility is not automatically installed when you enable the Web Server role in Windows 2008 Server. If you enable this feature, your old DirectoryServices code in .NET should work like it used to.
需要安装 IIS6 Metabase 兼容性组件
用了这种方案果然成功了!但事情并没有结束。
第三步:找原因,为什么IIS7 不能用这种方法!
功夫不负有心人!
IIS7 是没有元数据的。哎~~这就是根本原因,大家可以到C:\WINDOWS\system32\inetsrv这个目录看看,IIS6的和IIS7的文件不同的。
所以后来找到这种方法:
请注意本文的内容均基于Windows Vista Beta 2版本,在正式的发布版本中可能会有所改变。
Microsoft中提供了管理IIS7的一些非常强大的API——Microsoft.Web.Administration,可以很方便的让我们以编程的方式管理,设定IIS 7的各项配置。Microsoft.Web.Administration.dll位于IIS的目录(%WinDir%\System32\InetSrv)下,在项目中添加对其的引用后您就可以使用这些API了。下图显示了Microsoft.Web.Administration.dll中的主要对象。
让我们通过几个例子来使用Microsoft.Web.Administration,下面的例子均非常易懂,我就不再过多解释了。
建立一个站点(Site)
iisManager.Sites.Add("NewSite", "http", "*:8080:", "d:\\MySite");
iisManager.Update();
将一个应用程序(Application)添加到一个站点
iisManager.Sites["NewSite"].Applications.Add("/Sales", "d:\\MyApp");
iisManager.Update();
建立一个虚拟目录(Virtual Directory)
Application app = iisManager.Sites["NewSite"].Applications["/Sales"];
app.VirtualDirectories.Add("/VDir", "d:\\MyVDir");
iisManager.Update();
运行时控制:停止一个站点
iisManager.Sites["NewSite"].Stop();
运行时控制:回收应用程序池(Recyciling an Application Pool)
iisManager.ApplicationPools["DefaultAppPool"].Recycle();
运行时控制:得到当前正在处理的请求
foreach(WorkerProcess w3wp in iisManager.WorkerProcesses) {
Console.WriteLine("W3WP ({0})", w3wp.ProcessId);
foreach (Request request in w3wp.GetRequests(0)) {
Console.WriteLine("{0} - {1},{2},{3}",
request.Url,
request.ClientIPAddr,
request.TimeElapsed,
request.TimeInState);
}
}
还有一个有用之处是Microsoft.Web.Administration提供了对*.config(例如web.config)文件的编辑功能,让您再也不用像修改普通XML文件一样修改*.config了。但是原作者说他将在今后的Post中详细说明,我也只暂且写到这里了。
我的问题从根本解决了,希望能帮助遇到同样问题的你!
C#管理控制IIS7的方法的更多相关文章
- WIN7 IIS7 安装方法
一.首先是安装IIS.打开控制面板,找到"程序与功能",点进去. 二.点击左侧"打开或关闭Windows功能". 三 看下图打相应的钩.
- 如何在IIS7下配置ASP+ACCESS环境
如何在IIS7下配置ASP+ACCESS环境 | 浏览:901 | 更新:2013-01-16 17:46 1 2 3 4 5 6 7 分步阅读 默认装完IIS7之后,使用ASP程序会发现提示数据库连 ...
- 如何禁用不需要的HTTP方法
IIS7.0默认开启了不安全的OPTIONS和TRACE方法,建议关闭这两个方法. 以下环境为windows server 2008.IIS7.0 方法(1):web.config 在<conf ...
- IIS7如何实现访问HTTP跳转到HTTPS访问 转的
加几句,1.安装url重写模块,不需要重启IIS,安装完了就能用.个人感觉比 IIS REWRITE组件更好用,iis rewrite是安装第三方的那种,不缴费只可以把所有规则写在一起,不能区别站点, ...
- 怎样解决IIS6.0上传文件限制的问题?
我们用IIS发布的Bs项目,如果进行文件上传,在上传文件的时候,无法上传文件大小超过4M的文件 设置文件上传大小的方法,就是修改项目的web.config配置 在项目中的web.config文件中,添 ...
- 为集群配置Impala和Mapreduce
FROM: http://www.importnew.com/5881.html -- 扫描加关注,微信号: importnew -- 原文链接: Cloudera 翻译: ImportNew.com ...
- WebUploader上传大文件时,上传出错问题
上传普通文件没有问题,当文件达到一定大小的时候,上传错误,返回结果是404,我可以肯定的是路径是没有问题的.因为上传小文件等都是可以的. 然后使用webuploader的uploaderror监控错误 ...
- javaSE27天复习总结
JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ...
- IIS7禁用单个静态文件的缓存配置方法
IIS7中,想将一个经常修改的静态文件设置为不可缓存,在IIS配置界面里怎么也找不到... 一番google之后在stackoverflow里边发现了这样一段回答,最终解决了问题: just stum ...
随机推荐
- hdu 4444 Walk (离散化+建图+bfs+三维判重 好题)
Walk Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submi ...
- 协同编辑多人word一个小技巧文件
协同编辑多人word窍门 近期在工作中编写标书时因为不同内容分给了各个部门去制作.可是在汇总后遇到再次改动的问题.对方把改动后的部分文档发给我粘贴到标书中后,所有的格式所有都乱了.又一次整理格式.标题 ...
- eclipse luna 无法安装veloeclipse问题
问题: 在eclipse 4.4(luna)版本号.安装veloeclipse 2.0.8时,在即将完毕的时候出现下面错误提示: An error occurred while installing ...
- TCP/IP-协议族----17、应用层简单
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVrZXdhbmd6aQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...
- sql时间比较
- WPF 3D:使用变换中的TranslateTransform3D
原文:WPF 3D:使用变换中的TranslateTransform3D 程序效果: WPF 3D中的TranslateTransform3D应该是所有3D变换中最简单的变换,使用起来非常简单,先定义 ...
- 重新想象 Windows 8 Store Apps (20) - 动画: ThemeAnimation(主题动画)
原文:重新想象 Windows 8 Store Apps (20) - 动画: ThemeAnimation(主题动画) [源码下载] 重新想象 Windows 8 Store Apps (20) - ...
- 【iOS】随机三角瓷砖布局算法
你已经看够iOS鉴于这些默认的正方形块,整齐地显示? 本篇给出一个随机算法设计的三角布局的瓷砖和实施. 这样的规则,并提出妥协随机排列间.它看起来很凌乱,不会有一个新事物. 重点是设计和实施,以实现布 ...
- Amazon SQS简单介绍 上篇
SQS即Simple Queue Service, 是一个分布式的消息队列服务,使用它很easy,消息队列服务能够用来buffer burst, 使整个服务异步处理,不要求组件始终可用. 开发者最初使 ...
- MySQL各种日期类型与整型(转)
日期类型 存储空间 日期格式 日期范围 datetime 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 t ...