2009-07-03 2 views
28

У кого-нибудь есть пуленепробиваемый метод (в идеале C#!) Определения того, правильно ли зарегистрирована ASP.Net на вашем компьютере?Определение правильной регистрации ASP.Net

Я пишу программу установки для приложения ASP.Net, и мне нужно знать, должен ли я запускать aspnet_regiis.

В настоящий момент мы всегда запускаем aspnet_regiis. - Я гарантирую, что ASP.Net зарегистрирован должным образом, но это нежелательно, потому что он предлагает перезапуск всех пулов приложений.

В Интернете есть несколько полезных страниц (например, http://www.codeproject.com/KB/cs/iisdetection.aspx), но в качестве комментариев в этом сообщении часто бывает так, что реестр сообщает, что зарегистрирован ASP.Net, но aspnet_regiis еще нужно запустить для настройки IIS. Пользователь JonB опубликовал что-то похожее на работу IIS6 (и IIS7 с совместимостью с IIS6), но мне все равно нужно написать отдельный код обнаружения для IIS 7 с отключенным режимом совместимости IIS6.

Так кто-нибудь уже треснул эту гайку? Если да, сообщите нам об этом, так как это будет время. В противном случае я буду стараться и порт решение C++ в C# для IIS6 и IIS7 я буду смотреть исследовать <isapiCgiRestriction> раздел applicationHosts.config для

<add path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" allowed="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" /> 

Последний вопрос ...

Кто-нибудь знает, если все то же самое/разные в Windows 7?

ответ

10

Сначала я бы попробовал работать aspnet_regiis -lv. Это должно дать вам выход, как:

1.1.4322.0  Valid   C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll 
2.0.50727.0  Valid   c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll 

, что вы можете легко разобрать, чтобы убедиться, что установлена ​​и действует целевая версия. Если это не так, вам нужно будет пройти маршрут aspnet_regiis -i.

Кроме того, учитывая, что вы можете выполнить эту проверку на C#, вы можете добавить тестовую страницу в свое приложение ASP.NET. После того, как вы обычно считаете успешную установку, сделайте HttpWebRequest на этой тестовой странице. Сама страница может быть такой же простой, как пустая страница, и такая сложная задача, как выполнение самопроверки установки (разрешения файлов/папок, конфигурация БД и т. Д.) И только возврат HTTP 200, если все в порядке. Любой тайм-аут или ошибка указывает на плохую установку. Затем, необязательно, удалите тестовую страницу.

0

Этот фрагмент кода работает на IIS7 +

using Microsoft.Web.Administration; 

private static string[] ARR_STR_SUPPORTED_APP_POOLS = 
         { "ASP.NET v4.0", "ASP.NET v4.5", ".NET v4.5", ".NET v4.0" }; 

public static ApplicationPool GetFirstSupportedAppPoolInstalled(this ServerManager mgr, IEnumerable<string> supportedAppPools) 
{ 
    ApplicationPool result = null; 
    foreach (string appPoolName in supportedAppPools) 
    { 
     result = mgr.ApplicationPools[appPoolName]; 
     if (result != null) 
      break; 
    } 
    return result; 
} 

... 
using (var mgr = new ServerManager()) 
{ 
    if (!mgr.IISAccessCheck()) 
     throw new ApplicationException("Error trying to access IIS 7!"); 

    ApplicationPool appPool = mgr.GetFirstSupportedAppPoolInstalled(ARR_STR_SUPPORTED_APP_POOLS); 
    if (appPool == null) 
     throw new ApplicationException("No appropriate .NET application pool found!"); 

    // you can do something with the app pool, if needed 
} 
... 

Вы можете настроить его, как вы хотите.

Смежные вопросы