Как программно установить глобальные типы 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)
}