所以我想知道是否有一种特定的方法可以使用 powershell 在 IIS 7.5 中更改/编辑 mime 类型?
到目前为止,我所遇到的解决方案,以添加MIME类型,如: http://sclarson.blogspot.co.at/2011/08/adding-mime-type-to-iis-vis-powershell.html HTTP://论坛。 iis.net/t/1192371.aspx 和其他一些有书籍被引用但这些书籍不包含任何信息,我查了一下。
似乎使用了Add-WebConfigurationPropertyis used,但是当我将此方法用于现有的 mimetype 时,我将收到与重复项条目相关的错误(因为它已经在那里),因此此方法不在窗口中。
我试图改用 ,Set-WebConfigurationProperty但这导致它删除了所有现有的 mimetype 条目并只留下其中一个。
那么有没有人有建议或者可能知道这样做的正确方法?我还考虑过先删除条目然后添加它,唯一的问题是您需要知道 mimetype fileExtension 和 mimeTypes(即文本/XML 等)。所以我假设我需要首先使用该getwebconfigproperty方法获取两个属性,然后通过将其中的值解析到函数中来删除它delete-webpropconfig,然后添加它......但是仅仅通过三个步骤来设置一个 mimetype 似乎过度了..
据我所知,appcmd.exe set config "values and params here" 方法几乎可以直接执行.. 然而,这个问题是不幸的是我们不能使用它。是的,我知道我可以让 powershell 执行 appcmd 命令,但不幸的是这不是一个可行的选择。我曾尝试谷歌搜索和阅读书籍以寻求解决方案,但到目前为止还没有想出答案
1) 该set-webconfigurationproperty方法删除所有其他 mimetype 条目
2)add-webconfigurationproperty不允许我执行它并抛出“错误重复”消息
3) 在 1 行中使用 powershell 执行此操作的可行解决方案。
唯一似乎有效的是:
& $Env:WinDir\system32\inetsrv\appcmd.exe set config /section:staticContent /-"[fileExtension='.eml']"
& $Env:WinDir\system32\inetsrv\appcmd.exe set config /section:staticContent /+"[fileExtension='.eml',mimeType='application/octet-stream']"
Run Code Online (Sandbox Code Playgroud)
所以我采用了这种方法,正如前面可能提到的,任何类型的 set-webconfiguration 命令都只是覆盖了 IIS mimetype 菜单中的整个 mimetype 列表。
希望这有助于将来的某人
小智 7
我知道这个问题已经很老了并且已经得到解答,但我想为新观众添加一些内容。测试于IIS 8.5 Windows Server 2012R2. 不幸的是,我无法访问 IIS 7.5。
使用 .zip 扩展名作为我的示例文件扩展名
添加新的 MIME 类型:
Add-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter "system.webServer/staticContent" -Name "." -Value @{ fileExtension='.zip'; mimeType='application/x-zip-compressed' }
Run Code Online (Sandbox Code Playgroud)
编辑现有的 MIME 类型:
Set-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter "system.webServer/staticContent/mimeMap[@fileExtension='.zip']" -Name "fileExtension" -Value ".example"
Run Code Online (Sandbox Code Playgroud)
删除现有的 MIME 类型:
Remove-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter "system.webServer/staticContent" -Name "." -AtElement @{ fileExtension= '.zip' }
Run Code Online (Sandbox Code Playgroud)
读取/获取现有的 MIME 类型:
$getSetting = Get-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter "system.webServer/staticContent" -Name "."
$getSetting.Collection | Where-Object { $_.fileExtension -eq ".zip"}
#OR
Get-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter "system.webServer/staticContent" -Name "." | Where-Object { $_.fileExtension -eq ".zip"}
Run Code Online (Sandbox Code Playgroud)
您可以使用,Set-WebConfigurationProperty但必须在 XPath 过滤器中指定要更改的 mimetype。
例如,以下命令将在 IIS 服务器使用的根 web.config中将文件扩展名为“ .currentExt ”的 mime 类型更改为“ .changedExt ”:
Set-WebConfigurationProperty -Filter "//staticContent/mimeMap[@fileExtension='.currentExt']" -PSPath IIS:\ -Name fileExtension -Value ".changedExt"
Run Code Online (Sandbox Code Playgroud)
mimeMap 在XPath中使用是因为application.host.config的结构如下:
<staticContent lockAttributes="isDocFooterFileName">
<mimeMap fileExtension=".323" mimeType="text/h323" />
<mimeMap fileExtension=".aaf" mimeType="application/octet-stream" />
<mimeMap fileExtension=".aca" mimeType="application/octet-stream" />
...
</staticContent>
Run Code Online (Sandbox Code Playgroud)
我假设你通过修改建议的代码http://sclarson.blogspot.co.at/2011/08/adding-mime-type-to-iis-vis-powershell.html试图修改使用MIME类型时Set-WebConfigurationProperty。对链接中的代码使用以下修改时所有 mimeTypes 都被覆盖的原因
set-webconfigurationproperty //staticContent -name collection -value @{fileExtension='.otf'; mimeType='application/octet-stream'}
Run Code Online (Sandbox Code Playgroud)
是因为整个 mimeTypes 集合都被一个条目替换了。
| 归档时间: |
|
| 查看次数: |
12770 次 |
| 最近记录: |