Как программно установить глобальные типы MIME для IIS6?

В настоящее время я могу установить mime-тип с помощью adsutil.vbs для основного веб-сайта на IIS6 со следующим синтаксисом:

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

Кажется, это работает нормально, когда мне нужно только нацелиться на W3SVC/1.

Мне нужно написать скрипт обновления, который будет гарантировать, что для любых сайтов в данной установке IIS6 настроен правильный тип mime. Я мог бы добавить тип MIME для каждого индивидуального сайта или на глобальном уровне. Я должен сделать это программно и хотел бы использовать adsutil.vbs, если это вообще возможно.

2 ответа

Я думаю, что проще будет просто изменить типы MIME на каждом сервере, вам нужно сделать это только один раз, чтобы изменения каскадно перешли на каждый веб-сайт. Почему вы пытаетесь переписать MIME-тип.vbs? вам может быть лучше создать собственный.

Или вы можете установить изменение в метабазе для IIS, вам просто нужно установить прямое редактирование метабазы ​​на true на каждом сервере, а затем внести изменения через код.

Вы можете использовать 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)        
}
Другие вопросы по тегам