Описание: описанная выше проблема возникает в несерверной операционной системе (Win7). .NET 4.0 не регистрируется в IIS, даже если вы устанавливаете IIS до .NET 4.0 (и поэтому .NET должен быть правильно зарегистрирован в IIS). Это вызывает непредвиденные проблемы во время любой установки приложения ASP.NET - до запуска aspnet_regiis.exe -ir
из командной строки. С Win 2008 проблем нет (т. Е. Когда IIS установлен до .NET 4.0, тогда .NET правильно зарегистрирован на IIS и все работает как положено).
Итак, наконец, мой коллега сказал мне, что может быть решением проблемы. Я убедился, что следующее решение работает хорошо (также на Win7). ServerManager
из Microsoft.Web.Administration
пространства имен можно легко использовать:
public static bool IsAspNetRegistered()
{
using (var mgr = new ServerManager())
{
return mgr.ApplicationPools.Any(pool => pool.ManagedRuntimeVersion == "v4.0");
}
}
В случае успешной регистрации .NET в IIS существует по крайней мере один пул приложений, версия времени выполнения которого установлена на «v4.0», поэтому этот факт был использован для проверки.
Конечно, если кто-нибудь удалит все пулы приложений, этот метод может работать некорректно. Но это немного патологическая ситуация, мне все равно. Основная проблема заключается в том, чтобы предотвратить выполнение программы в соответствии с нашими рекомендациями по установке, однако по-прежнему невозможно установить приложение на компьютер.