[转载]安装MVC项目时自动给IIS添加通配符映射

[转载]安装MVC项目时自动给IIS添加通配符映射 – Popcorn – 博客园.

在IIS6中安装ASP.NET MVC项目时,需要将aspnet_isapi.dll添加到网站虚拟目录的通配符映射当中,很多时候我们需要手动完成。

这几天弄了个ASP.NET MVC3的项目,写完后做了一个安装部署程序,想安装的时候能自动将aspnet_isapi.dll添加到虚拟目录的通配符映射当中,于是写了下面的 VBS脚本,脚本支持将虚拟目录当作参数传递进来,可以自动给虚拟目录添加通配符映射。可以把这个脚本另存为.vbs文件,然后放到安装类当中使用 System.Diagnostics.Process.Start(vbsFile,virtualPath) 方法进行调用。安装目录可以使用/targetDir=[TARGETDIR]取得,然后处理后获得虚拟目录名。

如何制作安装项目及如何传递参数可以参考:http://kb.cnblogs.com/page/73922/
以下是VBS脚本程序:

Option Explicit
 Dim virtualPath
 Dim msgTitle
 msgTitle = "添加脚本映射"
 If WScript.Arguments.Length > 0 Then
     virtualPath = WScript.Arguments(0)
 Else
     virtualPath = "Web"
 End If
 
 Public Function AppMap()
  Dim oVirtDir
  set oVirtDir = Nothing
  On Error Resume Next
  Set oVirtDir = GetObject("IIS://localhost/W3Svc/1/Root/" & virtualPath)
  If Err <> 0 Then
   MsgBox "未能创建 IIS 管理对象!" & vbCrLf & Err.Description,vbOKOnly&vbExclamation,msgTitle
  End If
  If Not oVirtDir Is Nothing Then
   MapHandlers oVirtDir
  Else
   MsgBox "添加映射失败!",vbOKOnly&vbExclamation,msgTitle
  End If
  On Error GoTo 0
 End Function
  
 Sub MapHandlers(oVirtDir)
  Err.Number = 0
  Dim scriptMaps
  scriptMaps = oVirtDir.GetEx("ScriptMaps")
  If Err <> 0 Then
   MsgBox "未能获取当前脚本映射属性。"& vbCrLf & Err.Description,vbOKOnly&vbExclamation,msgTitle
   Exit Sub
  End If
  Dim iMap
  Dim sourceMap
  Dim newMap
  newMap = ""
  For iMap = LBound(scriptMaps) To UBound(scriptMaps)
   If Left(scriptMaps(iMap), 6) = ".aspx," Then
    sourceMap = scriptMaps(iMap)
    'MsgBox "Found aspx: " & newMap
   End If
   If Left(scriptMaps(iMap), 3) = ".*," Then
    'MsgBox "已经添加了映射"
     Exit Sub
   End If
  Next
  If sourceMap = "" Then
   MsgBox "未能找到aspx脚本映射",vbOKOnly&vbExclamation,msgTitle
   exit sub
  End If
  Redim Preserve scriptMaps(UBound(scriptMaps) + 1)
  newMap = Replace(sourceMap, ".aspx,", "*,")
  scriptMaps(UBound(scriptMaps)) = newMap
  'MsgBox scriptMaps(UBound(scriptMaps))
  oVirtDir.PutEx 2, "scriptMaps", scriptMaps
  If Err <> 0 Then
   MsgBox "保存脚本映射失败!" & vbCrLf & Err.Description,vbOKOnly&vbExclamation,msgTitle
  End If
  
  oVirtDir.SetInfo
  If Err <> 0 Then
   MsgBox "更新虚拟目录信息失败!" & vbCrLf & Err.Description,vbOKOnly&vbExclamation,msgTitle
  End If
 End Sub
 
 Call AppMap

上面代码的缺点是只能面对一个站点的时候,如果安装的时候服务器有多个站点,代码还需要进行改进。

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏