2009-12-15 105 views
4

目前我能设置一个MIME类型ADSUTIL.VBS对IIS6的主要网站的语法如下:如何以编程方式为IIS6设置全局MIME类型?

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

这似乎很好地工作时,我只需要针对SVC/1。

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

+0

机器上是否提供了PowerShell或C#/ .NET? – Kev 2009-12-17 17:01:56

+0

是的,我可以编写一个小型的.NET控制台应用程序,我希望在不部署任何二进制文件的情况下执行此操作 – Kevin 2009-12-20 13:29:48

回答

0

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

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

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)   
} 
相关问题