如何通过编程方式为IIS6设置全局MIME类型?

4

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

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

当我只需要针对W3SVC/1进行目标定位时,这似乎很有效。

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


这台机器上是否有PowerShell或C#/.NET可用? - Kev
是的,我可以编写一个小的.NET控制台应用程序,但我希望能够在不部署任何二进制文件的情况下完成。 - Kevin
2个回答

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)        
}

0

我认为更简单的方法是在每个服务器上修改MIME类型,您只需要进行一次更改即可使更改级联到每个网站,但是为什么要重写.vbs MIME类型呢?您最好创建一个自定义的MIME类型。

或者您可以在IIS的元数据中设置更改,您只需要在每个服务器上将启用直接元数据编辑设置为true,然后通过代码进行更改即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接