用VS2005制作网页对IIS进行操作

本文介绍了如何使用VS2005在Windows2003环境中对IIS进行管理,特别是创建虚拟目录。文章提到了需要引用System.DirectoryServices和System.Management,并展示了简单的页面示例,强调实际操作IIS的属性设置。
摘要由CSDN通过智能技术生成

主要是想用一下VS2005,对IIS的操作在IIS Admin中本来就可以进行管理。所以将就看,无所谓有用无用哈。^_^

在网上也找了一下,参考了一些别人的写法,如果有什么不对的,请你多指点。

本文只写出了部分代码,其他的内容请你自己补足。

环境:Windows2003 + VS2005

 

先需要添加两个引用: System.DirectoryServicesSystem.Management

添加虚拟目录:

做了一个简单的页面,如下图:

这里只是为了说明很多IIS里面站点的属性可以设置(具体属性及说明见本文最后),在本例子的aspx.cs文件里面,并不一定使用了页面控件的值;还有就是在程序中只是为了实现,并未对程序的写法进行严格的要求。

 

处理添加按钮的点击事件:

public static string VirDirSchemaName = "IIsWebVirtualDir";

 

IISManager iis = new IISManager();

iis.Connect();

iis.DefaultPage = DefaultPage.Text.Trim();

ReturnMessage.Text = iis.CreateVirtualDirectory(VirtualPath.Text.Trim(), PhysicalPath.Text.Trim());

 

在本文中,操作IIS的方法全部写在自定义的类IISManger中。上面的CreateVirtualDirectory()如下:

#region CreateVirtualDirectory 添加虚拟目录

    public string CreateVirtualDirectory(string nameDirectory, string realPath)

    {        

        DirectoryEntry folderRoot = _iisServer.Children.Find("Root", VirDirSchemaName);

        try

        {

            DirectoryEntry newVirDir = folderRoot.Children.Add(nameDirectory, VirDirSchemaName);

            newVirDir.Properties["Path"].Insert(0, realPath);       // 虚拟目录的绝对路径

            newVirDir.Properties["AccessExecute"][0] = false;       // 可执行文件。执行权限下拉菜单中

            newVirDir.Properties["AccessRead"][0] = true;           // 读取

            newVirDir.Properties["AccessWrite"][0] = true;          // 写入

            newVirDir.Properties["ContentIndexed"][0] = true;       // 资源索引

            newVirDir.Properties["DefaultDoc"][0] = DefaultPage;    // 默认页面

            newVirDir.Properties["AppFriendlyName"][0] = "world";   // 友好的显示名称

            newVirDir.Properties["AppIsolated"][0] = 2;             // 0 表示应用程序在进程内运行,值 1 表示进程外,值 2 表示进程池

            newVirDir.Properties["AccessScript"][0] = true;         // 可执行脚本。执行权限下拉菜单中

           

            newVirDir.Properties["DontLog"][0] = true;

 

            newVirDir.Invoke("AppCreate", true);

            newVirDir.CommitChanges();

            folderRoot.CommitChanges();

            _iisServer.CommitChanges();

            return "Add success";

        }

        catch (Exception e)

        {

            return "Sorry!Error when adding the virtual path. Return message is : " + e.Message;

        }

 

    }

#endregion

 

处理添加按钮的点击事件:

public static string VirDirSchemaName = "IIsWebVirtualDir";

 

IISManager iis = new IISManager();

iis.Connect();

iis.DefaultPage = DefaultPage.Text.Trim();

ReturnMessage.Text = iis.CreateVirtualDirectory(VirtualPath.Text.Trim(), PhysicalPath.Text.Trim());

 

在本文中,操作IIS的方法全部写在自定义的类IISManger中。上面的CreateVirtualDirectory()如下:

#region CreateVirtualDirectory 添加虚拟目录

    public string CreateVirtualDirectory(string nameDirectory, string realPath)

    {        

        DirectoryEntry folderRoot = _iisServer.Children.Find("Root", VirDirSchemaName);

        try

        {

            DirectoryEntry newVirDir = folderRoot.Children.Add(nameDirectory, VirDirSchemaName);

            newVirDir.Properties["Path"].Insert(0, realPath);       // 虚拟目录的绝对路径

            newVirDir.Properties["AccessExecute"][0] = false;       // 可执行文件。执行权限下拉菜单中

            newVirDir.Properties["AccessRead"][0] = true;           // 读取

            newVirDir.Properties["AccessWrite"][0] = true;          // 写入

            newVirDir.Properties["ContentIndexed"][0] = true;       // 资源索引

            newVirDir.Properties["DefaultDoc"][0] = DefaultPage;    // 默认页面

            newVirDir.Properties["AppFriendlyName"][0] = "world";   // 友好的显示名称

            newVirDir.Properties["AppIsolated"][0] = 2;             // 0 表示应用程序在进程内运行,值 1 表示进程外,值 2 表示进程池

            newVirDir.Properties["AccessScript"][0] = true;         // 可执行脚本。执行权限下拉菜单中

           

            newVirDir.Properties["DontLog"][0] = true;

 

            newVirDir.Invoke("AppCreate", true);

            newVirDir.CommitChanges();

            folderRoot.CommitChanges();

            _iisServer.CommitChanges();

            return "Add success";

        }

        catch (Exception e)

        {

            return "Sorry!Error when adding the virtual path. Return message is : " + e.Message;

        }

 

    }

#endregion

 

开始的时候,不管怎么样调试上面的代码,始终报错。在网上查了一下资料,才发现是权限不够。结果我是在组件管理器里面修改,然后又在文件夹修改,改来改去始终没找到关键改哪里,差点累死俺。最后才找到别人曾经做过的方法,在web.config文件里面 下添加一个 ,我把里面的信息改成了administrator,然后就成功了。也有人说修改machine.config也可以,不过我没试。对于这种修改config文件的做法,我觉得不是最好的,应该是修改其他某个地方的权限就可以,把密码暴露出来始终不是什么好事,在MSDN上也没找到,如果哪位大哥知道,透露一下好了~~~~~~~~~~~~

 

连接IIS服务器的方法如下,操作IIS(添加,修改,删除)的时候都需要用到:

#region Connect 连接IIS服务器

    public bool Connect()

    {

 

        if (_serverName == null)

            return false;

        try

        {

            _iisServer = new DirectoryEntry("IIS://" + _serverName + "/W3SVC/1");

            _target = _serverName;

            _connection = new ConnectionOptions();

            _scope = new ManagementScope(@"//" + _serverName + @"/root/MicrosoftIISV2", _connection);

            _scope.Connect();

        }

        catch

        {

            return false;

        }

        return IsConnected();

    }

 

    public bool IsConnected()

    {

        if (_target == null || _connection == null || _scope == null) return false;

        return _scope.IsConnected;

    }

    #endregion

 

关于添加IIS虚拟目录,还可以参考:System.EnterpriseServices.Internal.IISVirtualRoot.Create()System.EnterpriseServices.Internal. Publish.CreateVirtualRoot()System.EnterpriseServices.Internal .SoapServerVRoot.CreateVirtualRootEx

 

删除虚拟目录:

       #region DeleteVirtualDirectory 删除虚拟目录

    public string DeleteVirtualDirectory(string nameDirectory)

    {

        DirectoryEntry folderRoot = _iisServer.Children.Find("Root", VirDirSchemaName);

        DirectoryEntry newVirDir;

        try

        {

            newVirDir = folderRoot.Children.Find(nameDirectory, VirDirSchemaName);

        }

        catch

        {

            return "Sorry! The virtual path does not exists!!";

        }

 

        try

        {

   

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值