如何以编程方式为IIS6设置全局mime类型?

时间:2009-12-15 21:52:04

标签: iis-6 mime mime-types adsutil.vbs

目前,我可以使用以下语法为IIS6上的主网站设置带有adsutil.vbs的mime类型:

cscript adsutil.vbs set W3SVC/1/Root/MimeMap ".manifest, text/cache-manifest"

当我只需要定位W3SVC / 1时,这似乎工作正常。

我需要编写一个更新脚本,以确保给定IIS6安装上的任何站点都配置了正确的mime类型。我可以将mime类型添加到每个单独的站点或全局级别。我需要以编程方式执行此操作,并且如果可能的话,我想使用adsutil.vbs。

2 个答案:

答案 0 :(得分:0)

我认为更简单的方法就是修改每台服务器上的mime类型,你只需要做一次更改以级联到每个网站,为什么你要重写.vbs mime类型呢?你可能最好创建一个自定义的。

或者您可以在IIS的Metabase中设置更改,您只需要在每台服务器上将enable direct metabase edit设置为true,然后通过代码进行更改。

答案 1 :(得分:0)

您可以使用ADSI和powershell 2.0。

$adsiPrefix = "IIS://$serverName"
$iisPath = "W3SVC"
$iisADSI = [ADSI]"$adsiPrefix/$iisPath"

$site = $iisADSI.Create("IISWebServer", $script:webSiteNumber)

$xapMimeType = New-Object -comObject MimeMap
    SetCOMProperty $xapMimeType "Extension" ".xap"
    SetCOMProperty $xapMimeType "MimeType" "application/x-silverlight-app"
    $site.Properties["MimeMap"].Add($xapMimeType)

    $site.SetInfo()
    $site.CommitChanges()

function SetCOMProperty($target, $member, $value) {
    $target.psbase.GetType().InvokeMember($member, [System.Reflection.BindingFlags]::SetProperty, $null, $target, $value)        
}