C#操作IIS完整解析
### C#操作IIS完整解析 #### 一、版本问题 在进行编程操作IIS之前,首先要考虑的一个关键问题是IIS的版本。不同版本的IIS对于编程方式有着不同的要求和影响。例如,在IIS 6.0时代,通常会使用`System.DirectoryServices`命名空间下的`DirectoryEntry`对象来实现编程访问;而到了IIS 7.0及之后的版本,编程控制IIS的方式发生了较大的变化,引入了`Microsoft.Web.Administration`命名空间,提供了多个新的对象来简化和提高操作IIS的效率。 #### 二、明确目标与环境 在实际应用环境中,操作系统主要以Windows XP/2000/2003为主,这意味着IIS版本主要集中在5.0/5.1/6.0之间。因此,本文档中的示例代码都将针对IIS 7.0以下的版本(不包括7.0)进行编写。具体的目标是:将一个Silverlight应用程序成功部署到本地机器的IIS上,并支持通过局域网进行访问。这个需求虽然简单,但在实际编程过程中,由于局域网环境的不可预测性,可能会遇到多种未知的问题。因此,我们需要确保编程能够同时控制IIS和其他可能影响部署的因素。 #### 三、进入编程阶段 为了解决上述需求,我们首先需要确定解决问题的基本思路:在默认站点下创建一个虚拟目录来承载Silverlight应用程序,该虚拟目录运行在一个独立的应用程序池中,并支持局域网内的匿名访问。此外,还需要控制IIS服务的重启以确保配置更改立即生效。 **1. 获取IIS版本** 在进入客户环境前,需要检测是否存在已安装的IIS以及获取其版本号。目前有两种主要的方法来获取IIS的版本: - **方法一:** 通过遍历`DirectoryEntry`实体目录。 ```csharp public static void GetIssVersionByDri(string domainname) { try { if (string.IsNullOrEmpty(domainname)) { // 如果为空则默认为本地机器 domainname = "LOCALHOST"; } DirectoryEntry getEntity = new DirectoryEntry("IIS://" + domainname + "/W3SVC/INFO"); string Version = getEntity.Properties["MajorIISVersionNumber"].Value.ToString(); MessageBox.Show(Version); } catch (Exception se) { // IIS 5.0中没有"MajorIISVersionNumber"属性,将抛出异常以证明版本为5.0 MessageBox.Show("获取ISS的版本是发生异常信息:" + se.Message); } } ``` - **方法二:** 通过读取注册表中的IIS修改版本值(注意:此方法可能不稳定)。 ```csharp public static string GetIssVersion() { string issversion = string.Empty; RegistryKey getkey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\InetStp"); if (getkey != null) { issversion = Convert.ToInt32(getkey.GetValue("MajorVersion", -1)).ToString(); MessageBox.Show(issversion.ToString()); } return issversion; } ``` **2. 创建虚拟目录** 每个Internet服务都可以从多个目录中发布,这些目录可以通过通用命名约定(UNC)名、用户名和用于访问权限的密码来指定。虚拟目录是指可以被发布的操作目录,可以在本地驱动器或网络上。以IIS 6.0为例,创建虚拟目录的具体步骤如下: - 确定虚拟目录所在的物理路径。 - 设置虚拟目录的名称。 - 接下来,配置虚拟目录的访问权限。 - 确保虚拟目录运行在一个独立的应用程序池中。 通过上述步骤,我们可以有效地控制Silverlight应用程序在IIS上的部署过程,确保其能够在局域网内正常访问。需要注意的是,为了使更改立即生效,可能需要重启IIS服务。这涉及到更多关于IIS服务管理的知识点,将在后续章节进行详细介绍。
- 物是人非AUV2014-07-22还可以,就是不支持IIS7及以上
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助