Определение правильности регистрации ASP.Net
У кого-нибудь есть пуленепробиваемый метод (в C# в идеале!) Определения того, правильно ли ASP.Net зарегистрирован на вашем компьютере?
Я пишу программу установки для приложения ASP.Net, и мне нужно знать, должен ли я запустить aspnet_regiis
,
На данный момент мы всегда бежим aspnet_regiis
- Я должен убедиться, что ASP.Net зарегистрирован правильно, но это нежелательно, поскольку он запрашивает перезапуск всех пулов приложений.
В Интернете есть несколько полезных страниц (например, http://www.codeproject.com/KB/cs/iisdetection.aspx), но, как показывают комментарии в этом посте, довольно часто регистр сообщает об этом ASP. Сеть зарегистрирована, но 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?
2 ответа
Сначала я бы попробовал бежать 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, только если все в порядке. Любой тайм-аут или ошибка указывает на неправильную установку. Затем, при необходимости, удалите тестовую страницу.
Этот фрагмент работает для 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
}
...
Вы можете настроить его, как вы хотите.