中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual Stduio 2005
更改IIS属性
作者:佚名 时间:2005-11-25 13:50 出处:互连网 责编:chinaitpower
              摘要:暂无

简介

 

Microsoft Visual Studio .NET中的Web安装项目将Internet信息服务的Web文件夹的大多数常见设置作为文件属性予以公开;然而,并非所有在安装Web应用程序时可能需要修改的设置或属性都被公开。例如,有必要关闭对 A SP.NET Web应用程序进行的匿名访问,以确定Web客户端的用户名,但Web安装项目并未公开 A uth A nonymous属性。可以在安装过程中使用自定义操作来设置这些附加属性。

 

Internet信息服务(IIS)通过IIS对象揭示了这些属性中的大多数。有关这些IIS对象和属性的信息包含在Visual Studio .NET文档中,通过在索引中搜索“IIS A dmin Objects: reference”即可找到。

 

本文提供了使用托管安装程序类和Visual Basic.NET的代码示例。该托管安装程序类的代码可以用Visual Studio .NET所支持的任何语言编写的代码代替。如果不使用安装程序类,还可以使用脚本语言(如VBScript)编写自定义操作。脚本自定义操作的功能较弱,调试起来更为困难,但可将其用于公共语言运行库不可用的安装(例如,C++ A TL Web Server项目)

 

代码示例使用语法“IISVdir. A uth A nonymous = False”来修改 A uth A nonymous属性。如果要设置其他属性,可以基于文档更改这些代码以设置相应的属性。代码示例使用SetInfo方法向服务器提交更改。

 

安装过程中显示的“Installation Address”对话框使安装用户可以指定用于安装Web应用程序的虚拟目录和端口。在“Windows2000 Server”和“Windows Server 2003中,多个Web服务器可以驻留在一台计算机上。Web安装程序只能安装到TCP端口上的活动Web服务器。因此,“Installation Address”对话框中的Port属性标识了在其上创建虚拟目录的Web服务器。自定义操作或脚本必须能够基于端口,标识正确的Web服务器。

 

所包含的附加示例,演示了如何在安装过程中显示一个对话框,使用户可以选择要设置的附加IIS属性。

 

创建Web项目

 

为了在部署期间修改IIS设置,首先必须拥有要部署的Web应用程序。您可以使用已用Visual Studio .NET创建的任何Web应用程序,或者您可以按照下面的说明创建一个空的Web应用程序。

 

创建Web应用程序项目

 

1.File菜单上,选择New,然后单击Project,将显示New Project对话框。

2.Project Types窗格中,选择Visual BasicVisual C#

3.Templates窗格中,选择Empty Web Project

4.Location文本框中,指定要放置该Web项目的URL(包括您要为它提供的名称)。

5.单击OK按钮创建该Web项目。

 

Visual Studio将连接到服务器,并且向项目节点中的解决方案资源管理器中添加相应的项目项。

 

使用托管安装程序类设置IIS属性

 

托管安装程序类(也称为安装组件)使您可以设置将在部署应用程序时发生的自定义操作。在该示例中,使用了托管安装程序类来公开可设置IIS A uth A nonymous属性的代码。下面的步骤将创建一个安装程序类,添加用于设置IIS属性的代码,提供一个FindServerNum函数对服务器进行循环访问,并查找安装了Web应用程序的端口。

 

Web应用程序项目添加安装程序类

 

添加安装程序类

 

1.Project菜单上,选择 A dd New Item

2. A dd New Item对话框中,双击Installer Class,将类添加到项目中。

3.添加以下过程以覆盖基类的Install过程:

 

Public Overrides Sub Install(ByVal stateSaver A s _

 

System.Collections.IDictionary)

 

    Dim strVDir A s String = Me.Context.Parameters.Item("VDir")

 

    Dim intServerNum A s Integer = _

 

    Me.FindServerNum(Me.Context.Parameters.Item("Port"))

 

    Dim strObjectPath A s String = "IIS://" & _

 

    System.Environment.MachineName & "/W3SVC/" & _

 

    intServerNum.ToString & "/ROOT/" & strVDir

 

    Dim IISVdir A s Object

 

 

    ' Gets the IIS VDir Object.

 

    IISVdir = GetIISObject(strObjectPath)

 

 

    ' Set the A uth A nonymous property here.

 

    IISVdir. A uth A nonymous = False

 

 

    ' Uses SetInfo to save the settings to the Server.

 

    IISVdir.SetInfo()

 

End Sub

 

4.Install过程后且End Class语句前添加以下函数:

 

Public Function FindServerNum(ByVal strPort A s String) A s Integer

 

    Const MD_SERVER_ST A TE_ST A RTED = 2

 

 

    Dim MachineName A s String

 

    Dim IISObjectPath A s String

 

    Dim IISObject A s Object

 

    Dim ChildObject A s Object

 

    Dim ChildObjectName A s String

 

    Dim Servers A s New Collection()

 

    Dim ServerNum A s Integer

 

    Dim i A s Integer

 

    Dim strBindings A s String

 

    Dim strSvrPort A s String

 

    Dim Bind A rray A s A rray

 

 

    MachineName = System.Environment.MachineName

 

    IISObjectPath = "IIS://" & MachineName & "/W3SVC"

 

 

    ' Iterates through the W3SVC folder to get the name of

 

    ' each child object.

 

    IISObject = GetIISObject(IISObjectPath)

 

 

    For Each ChildObject In IISObject

 

        ChildObjectName = ChildObject. A dsPath

 

        ChildObjectName = Right(ChildObjectName, Len(ChildObjectName) _

 

        - InStrRev(ChildObjectName, "/"))

 

 

        Try

 

            ' If the name can be converted to an integer (port number),

 

            ' add it to the Servers collection.

 

            ServerNum = CType(ChildObjectName, Integer)

 

            Servers. A dd(ServerNum)

 

        Catch

 

            ' If the name cannot be converted to an integer,

 

            ' it isn't a port and can be ignored.

 

        End Try

 

    Next

 

 

    ' Iterates through each server, removing each inactive server

 

    ' without the correct port.

 

    For i = Servers.Count To 1 Step -1

 

        IISObjectPath = "IIS://" & MachineName & "/W3SVC/" & _

 

        Servers(i)

 

        IISObject = GetIISObject(IISObjectPath)

 

 

        ' Gets the Port Number of the current IISObject.

 

        Bind A rray = IISObject.ServerBindings

 

        strBindings = Bind A rray(0)

 

        strSvrPort = Left(strBindings, InStrRev(strBindings, _

 

        ":") - 1)

 

        strSvrPort = Right(strSvrPort, Len(strSvrPort) - _

 

        InStr(strSvrPort, ":"))

 

 

        ' Determines if this is our server. IIS can only have one

 

        ' active port, so if the port is active it is the port where

 

        ' the application is installed.

 

        If strPort = strSvrPort Then

 

            If IISObject.ServerState = MD_SERVER_ST A TE_ST A RTED Then

 

                Return Servers(i)

 

            End If

 

        Else

 

            ' Not the active Port, so remove it from the

 

            ' collection.

 

            Servers.Remove(i)

 

        End If

 

    Next

 

    ' Checks how many servers are left. If one, we've found it

 

    ' otherwise, report an error.

 

    Select Case Servers.Count

 

        Case 0

 

            Err.Raise(9999, "FindServerNum", "No A ctive Servers with _

 

            " & "the requested port were found. Port=" & strPort & _

 

            ". ")

 

        Case 1

 

            Return Servers(1)

 

        Case Else

 

            Err.Raise(9999, "FindServerNum", "More than one A ctive _

 

            servers with the requested port were found. Port=" & _

 

            strPort & ". ")

 

    End Select

 

End Function

 

 

Private Function GetIISObject(ByVal strFullObjectPath A s String) A s Object

 

    Dim IISObject A s Object

 

 

    Try

 

        IISObject = GetObject(strFullObjectPath)

 

        Return IISObject

 

    Catch exp A s Exception

 

        Err.Raise(9999, "GetIISObject", "Error opening: " _

 

        & strFullObjectPath & ". " & exp.Message)

 

    End Try

 

End Function

 

 

向解决方案添加Web安装项目

 

可使用Web安装项目,创建用于在Web服务器上安装Web应用程序的Windows安装程序(.msi)文件。

 

添加Web安装项目

1.File菜单上,选择Add Project,然后选择New Project

2. A dd New Project对话框中,选择Project Type窗格中的Setup and Deployment Projects,然后选择Templates窗格中的Web Setup Project。在Name框中,键入Web应用程序和Setup的名称。

该项目即被添加到解决方案资源管理器中,并且将打开文件系统编辑器。

3.Properties窗口中,选择ProductName属性,并键入Web应用程序的名称。

 

 

Web安装项目添加项目输出

 

下一步是通过添加项目输出将Web应用程序与Web安装项目关联起来。这种情况下,项目输出包括Web应用程序、所有内容文件以及托管安装程序类。

 

添加项目输出

 

1.在文件系统编辑器中,选择Web A pplication Folder

2. A ction菜单上,选择Add,然后选择Project Output

3. A dd Project Output Group对话框中,从Project下拉列表中选择您的Web应用程序。

4.从该列表中选择Primary OutputContent Files组,然后单击OK按钮。

 

将安装程序类添加为自定义操作

 

通过自定义操作,可以在安装结束后运行代码,以执行安装程序无法完成的操作,例如设置Web安装项目未公开的IIS属性。在此情况下,将要运行的自定义操作是安装程序类,它包含在Web应用程序项目的主输出中。

 

添加自定义操作

 

1.在解决方案资源管理器中选择Web安装项目。

2.View菜单上,选择Editor,然后选择Custom A ctions

3.在自定义操作编辑器中,选择Install节点。在 A ction菜单上,选择 A dd Custom A ction

4.Select Item in Project对话框中,双击Web A pplication Folder

5.选择Primary output from Web A pp ( A ctive)项,其中Web A ppWeb应用程序的名称,然后单击OK按钮。

 

配置自定义操作

 

为了设置IIS属性,自定义操作需要知道将要安装的应用程序的虚拟目录和端口。这可以使用Custom A ctionData属性来实现。

 

配置自定义操作

 

1.在自定义操作编辑器中,选择在上一步中添加的自定义操作。

2.Properties窗口中,选择Custom A ctionData属性,然后键入“/VDIR=[T A RGETVDIR] /PORT=[T A RGETPORT]”。

 

这会指定Custom A ctionData属性返回一个字符串,其中包含用户在安装过程中输入的虚拟目录([T A RGETVDIR]属性)和端口([T A RGETPORT]属性)。

 

此时,您便准备好生成Web安装项目,并可安装您的Web应用程序了。下一部分将演示其他步骤,这可以让应用程序安装人员在安装过程中选择IIS设置。

 

基于用户输入设置IIS属性

 

本节基于上述步骤,进一步演示如何接受用户对IIS设置输入的步骤。在此情况下,您将显示一个对话框,使用户可以决定是否启用 A SP缓冲。 A SP缓冲确定是否必须在显示Web页之前完成对该页的处理。

 

添加自定义用户界面对话框

 

自定义用户界面对话框用于在安装过程中收集用户输入。在此情况下,您将使用一个对话框向用户提供复选框。该对话框将在安装过程中恰好于Installation A ddress对话框之前显示。

 

创建自定义安装对话框

 

1.在解决方案资源管理器中选择Web安装项目。

2.View菜单上,指向Editor,然后选择User Interface

3.在用户界面编辑器中,选择Install下的Start节点。在 A ction菜单上,选择 A dd Dialog

4. A dd Dialog对话框中,双击Checkboxes ( A )对话框。

5. A ction菜单上,选择Move Up。重复执行该操作,直至Checkboxes ( A )对话框位于Installation A ddress节点上方。

6."Properties"窗口中,设置下列属性:

属性

设置

说明

BannerText 

Web站点配置

指定要在该对话框的标题区显示的文本。

BodyText 

选择该应用程序的IIS设置

指定要在对话框的正文显示的文本。

Checkbox1Label 

启用 A SP缓冲

指定对话框中第一个CheckBox控件的标签文本。

Checkbox 2Visible

false

隐藏第二个CheckBox控件。

Checkbox 3 Visible

false

隐藏第三个CheckBox控件。

Checkbox 4Visible

false

隐藏第四个CheckBox控件。

 

 

编辑安装程序类代码

 

下一步是修改安装程序类中用于更新Buffering属性的代码。

 

修改安装程序类

 

1.在解决方案资源管理器中选择安装程序类(Installer.vb),然后按F7打开代码编辑器。

2.在安装过程中,找到内容为“Dim IISVdir A s Object”的行。

3.在该行下面,紧接着添加以下代码:

 

Dim blnBuffering A s Boolean

 

If Context.Parameters.Item("BUFFERING") = "1" Then

 

    blnBuffering = true

 

Else

 

    blnBuffering = false

 

End If

 

4.找到内容为“IISVdir. A uth A nonymous = False”的行。

5.在该行下面,紧接着添加以下代码:

 

IISVdir. A spBufferingOn = blnBuffering

 

 

修改自定义操作

 

最后一步是修改自定义操作的Custom A ctionData属性,以包含由自定义对话框的Checkbox1Property属性返回的值。

 

修改自定义操作

1.在解决方案资源管理器中选择Web安装项目,然后打开自定义操作编辑器。

2.在自定义操作编辑器中,选择在前面添加的自定义操作。

3.Properties窗口中,选择Custom A ctionData属性,然后键入“/VDIR=[T A RGETVDIR] /PORT=[T A RGETPORT] /BUFFERING=[CHECKBOX A 1]”。

这会将复选框([CHECKBOX A 1]属性)的值添加到由Custom A ctionData属性返回的字符串中。

 

此时,您再一次准备好生成Web安装项目并安装您的Web应用程序。在安装过程中,您将看到自定义的Web Site Configuration对话框,其中包含Enable A SP Buffering复选框,使您可以指定IIS Buffering属性的设置。安装完成后,您可以在服务器上检查IIS设置,以验证属性的设置是否正确。

 

小结

 

尽管Web安装项目并未公开所有IIS属性,但通过自定义操作来设置IIS属性还是比较容易的。虽然本文只演示了两个属性,但您可以修改前面的代码来处理任何IIS对象的任何属性。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有