Программная проверка, включена ли роль совместимости IIS6 в IIS7 - PullRequest
3 голосов
/ 31 марта 2010

Как проверить с помощью C #, включена ли / отключена роль совместимости IIS6 на IIS7?

Ответы [ 3 ]

3 голосов
/ 31 марта 2010

вы можете проверить прочитанное значение в реестре

HKEY_LOCAL_MACHINE\Software\Microsoft\InetStp\Components\WMICompatibility

или вы можете вывести содержимое servermanagercmd в файл xml и проанализировать этот файл в поисках компонента совместимости iis6

ServerManagerCmd -query [SaveFile.xml]

Если вы делаете это на R2, servermanagercmd устарел, поэтому вы можете использовать powershell для выполнения той же проверки. Вот несколько примеров PowerShell, в данном случае это делается удаленно http://www.techmumbojumblog.com/?p=217

Подход WMI из предыдущего ответа, вероятно, также хорош, особенно если у вас есть больше задач по настройке IIS после проверки, что установлено средство совместимости.

Кстати, если вы найдете параметры конфигурации, которые не обрабатываются компонентом совместимости, вот что я обнаружил, делая это из C #, то, что я настраивал через wmi в iis6, работало нормально на уровне веб-сайта и ниже виртуальный каталог и пулы), но для настройки уровня веб-сервера мне пришлось использовать API, установленный с iis7, Microsoft.Web.Administration.dll из System32 \ inetsrv.

using Microsoft.Web.Administration;
1 голос
/ 06 апреля 2010

Пожалуйста, кто-нибудь даст хороший ответ на это! В качестве мотивации, вот очень плохой ответ =)

// Ok, this is stupid, but I can't find any other way to do this
// Detect whether we're in integrated mode or not
#warning GIANT HACK FOR IIS7 HERE
try
{
    var x = HttpContext.Current.CurrentNotification;
    _isIntegratedMode = true;
}
catch (PlatformNotSupportedException)
{
    _isIntegratedMode = false;
}
catch (NullReferenceException)
{
    _isIntegratedMode = true;
}

Это то, что наш код в настоящее время делает, чтобы выяснить это (да, я знаю, что это ужасно плохо - отсюда и предупреждения)

0 голосов
/ 31 марта 2010

Вы, вероятно, можете сделать это, программно запросив у поставщика WMI IIS7. http://learn.iis.net/page.aspx/162/managing-sites-with-iis-7039s-wmi-provider/

Я не знаю, сможете ли вы сделать это через powershell.

...