2009-12-15 80 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)   
} 
相關問題