У меня есть веб-сайт aspx.net, работающий на платформе .net версии 4.0, на этом веб-сайте используется проверка подлинности с помощью форм, за исключением небольшой части системы, где хранятся веб-службы, которые были настроены для доступа всем (с использованием настройка местоположения в файле web.config).
приложение установлено на сервере Windows 2008, IIS7.5, с собственным пулом памяти, настроенным для .NET 4.0. Также настроен DefaultAppPool, который я изначально оставил настроенным для .NET 2.0.
Я исследовал проблему с запуском одной из моих веб-служб, в которой ошибка 404 возвращалась всякий раз, когда вызывалась функция, я решил эту проблему, однако я заметил, что всякий раз, когда я получал ошибку, версия .NET, возвращающая ошибку, была версией 2.0 это пул приложений, в котором он должен работать, а не версию 4.0. Я подтвердил это поведение, изменив также настройки DefaultAppPool на 4.0, и ошибка была сгенерирована соответствующей версией.
IIS, похоже, принял решение о том, какой пул памяти следует использовать, в обход того, что я настроил для веб-сайта aspx.net.
Кто-нибудь еще сталкивался с подобной проблемой, я схожу с ума, есть ли где-то скрытый параметр конфигурации, который мог бы оправдать такое поведение? (т.е. где-то в machine.config)
Это только тогда, когда есть ошибка, и это было 404; это говорит о том, что запрос, генерирующий ошибку, не был частью пространства имен, обслуживаемого вашим пулом приложений. Потому что 404 не найден, и это означает, что URL-адрес неверен; Психическая отладка сообщает нам, что это не попадает в / путь / вашего приложения.
Если веб-сайт по умолчанию работает как DefaultAppPool в корневом каталоге, любые неправильно маршрутизированные запросы, которые попадают за пределы вашего конкретного пути к приложению (которое выполняется в Your40AppPool), будут обслуживаться DefaultAppPool.
Netsh http sh ser
покажет вам пространства имен URL, определенные для каждого пула приложений (просто смотрите на него некоторое время, пока не освоитесь). Если какой-либо запрос нацелен на что-либо за пределами / path /, сопоставленного с Your40AppPool, он будет обслуживаться тем, что зарегистрировано на уровне сайта (или ящика), в большинстве случаев это DefAppPool.