资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 编程开发 >
Advertisement
文章正文

更改IIS属性_编程

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   
  • Visual Studio 2005 Team System:通过更完善的测试实现更好的软件 
  • 逻辑数据中心设计器简介 — 第二部分 
  • Team Architect Edition 应用程序设计器简介,第二部分 
  • 用ASP实现对MP3曲目信息的操作 
  • 一个ASP统计制作实例 
  • 用ASP实现网上“五子棋”大赛 
  • vbscript错误代码及对应解释大全 
  • 如何学好ASP? 
  • VBScript教程 第五课 VBScript常数 
  • VBScript教程 第三课 VBScript数据类型 
  • 页面导航:

    正文内容:

    简介

     

    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 basic或visual 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 isnt 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, weve 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 output和content 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 pp是web应用程序的名称,然后单击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对象的任何属性。


     

     
    热门推荐笔记本: IBM笔记本
    相关文章:
    webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
    ©2007 popbb.net All Rights Reserved