Назад | Перейти на главную страницу

Редактировать настройки машинного ключа .NET 4.0 на уровне компьютера в IIS 7.0

Я пишу план реализации, включающий изменение параметров ключа машины ASP.NET для .NET 4.0 на серверах, на которых работает IIS 7.0.

Я бы предпочел изменить настройку через диспетчер IIS.

На моем локальном компьютере с IIS 7.5 это просто. Войдите в диспетчер IIS и на панели действий справа справа находится команда «Изменить версию .NET Framework». Я могу изменить это между .NET 2.0 и .NET 4.0, и это изменит, какой уровень машины web.config я редактирую, когда я меняю машинный ключ с домашней страницы диспетчера IIS.

Однако в IIS 7.0 я не вижу команды «Изменить версию .NET Framework». Поэтому я не вижу другого способа изменить настройку ключа машины .NET 4.0, кроме ручного редактирования C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config

Итак, два вопроса

  1. Есть ли эквивалент команды IIS Manager 7.5 «Изменить версию .NET Framework» в IIS Manager 7.0?
  2. Есть ли другой способ установить параметры ключа машины в C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config без ручного редактирования файла на машине IIS 7.0?

Должно быть возможно сценарий такого процесса, я бы, вероятно, начал с PSH, поскольку он имеет встроенную поддержку XML и доступ к .NET (полезно для создания новых ключей, если они указываются).

Но прежде всего получить список виртуальных каталогов, с которых можно начать. Обычно это легко сделать с помощью appcmd:

# Use array constructor to force an array, event with only one result
# format: VDIR "name" (physicalPath:path)
$vdirs = @(C:\Windows\system32\inetsrv\appcmd.exe list vdir)
$vdirs = $vdirs | Where-Object { -not [string]::IsNullOrEmpty($_) } | Foreach-Object -Process {
  if ($_ -match "physicalPath:([^)]+)\)$") {
   $matches[1]
  }
}

С этой точки зрения $vdirs представляет собой массив папок, сопоставленных с IIS.

В каждом из этих поисков web.config файлы:

$configFiles = $vdirs | Foreach-Object -Process {
  Get-ChildItem -Path $_ -Recurse -Filter "web.config" | Foreach-Object -Process { $_.FullName }
}

Это массив полных имен пути к web.config файлы. На этом этапе вы можете использовать поддержку XML PowerShell для проверки или обновления любой части файла, которая вам нравится.

Похоже, вам нужно это исправление, чтобы сообщение «Изменить версию .NET Framework» отображалось в IIS Manager 7.0.

http://support.microsoft.com/kb/958854

Я все еще хочу узнать, есть ли другие способы установить MachineKey без редактирования web.config вручную.