需要向web.config添加Access-Control-Allow- *标头

时间:2015-05-06 13:56:51

标签: powershell iis octopus-deploy

我正在尝试使用powershell脚本将以下内容添加到我的web.config中。

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <clear />
      <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Headers" value="Content-Type" />
      <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
    </customHeaders>
  </httpProtocol>

这是我拥有的powershell代码snippit(仅包括前1个,其他两个看起来相同)

Write-Host "Importing WebAdministration"
Import-Module WebAdministration 
cd IIS:\

$sitePath = ("IIS:\Sites\test.test1.com")

Write-Host "This works"
Set-WebConfigurationProperty system.web/sessionState $sitePath -Name mode -     Value Off

Write-Host "Does not work"
Set-WebConfigurationProperty -PSPath $sitePath -Filter 'system.webServer/httpProtocol/customHeaders/add[@name="Access-Control-Allow-Origin"]' -Name 'value' -Value '*' -Force

执行此操作时,我会在章鱼中获得以下结果。

警告:目标配置对象 &#39; system.webServer / httpProtocol / customHeaders / Access-Control-Allow-Origin不是  发现于路径&#39; MACHINE / WEBROOT / APPHOST / sub.mysite.com&#39;。

未添加该值。我已导入WebAdministration模块,并且大多数其他设置都有效。

2 个答案:

答案 0 :(得分:1)

管理以使用以下内容对其进行排序。

Add-WebConfigurationProperty //system.webServer/httpProtocol/customHeaders  "IIS:\sites\test.test1.com" -AtIndex 0 -Name collection -Value @{name='Access-Control-Allow-Origin';value='*'}
Add-WebConfigurationProperty //system.webServer/httpProtocol/customHeaders  "IIS:\sites\test.test1.com" -AtIndex 0 -Name collection -Value @{name='Access-Control-Allow-Headers';value='Content-Type'}
Add-WebConfigurationProperty //system.webServer/httpProtocol/customHeaders  "IIS:\sites\test.test1.com" -AtIndex 0 -Name collection -Value @{name='Access-Control-Allow-Methods';value='GET, OPTIONS'}

希望这有助于将来的某些人,浪费时间。

答案 1 :(得分:0)

我认为您的XPath表达式与您尝试操作的节点不匹配。试试这个:

Add-WebConfigurationProperty -PSPath $sitePath `
  -Filter 'system.webServer/httpProtocol/customHeaders/add[@name="Access-Control-Allow-Origin"]' `
  -Name 'value' -Value '*' -Force