Скрипт не обслуживается обработчиком статических файлов в IIS7.5

130

Я только что попытался развернуть свое первое веб-приложение в IIS на своем ноутбуке с Windows 7 Home Premium. После создания приложения мне пришлось перейти на классический пул приложений, а затем установить этот пул для платформы 4.0. Теперь я получаю следующую ошибку:

Ошибка HTTP 404.17 - не найдено. Запрошенное содержимое похоже на сценарий и не будет обслуживаться обработчиком статических файлов.

Запрошенный URL-адрес: http: // localhost: 80 / pvmms / default.aspx

Боюсь, что обширный поиск в Google не дал ничего ясного или определенного, с которым я мог бы работать, и, как обычно, я обратился к экспертам.

EDIT: я подозреваю, что это связано с тем, что для файлов .aspx нет сопоставлений обработчиков framework 4.0. Однако aspnet_regiis даже показывает моему пользователю-администратору палец и говорит, что мне нужны права администратора для его запуска.

РЕДАКТИРОВАТЬ №2: Я зарегистрировал все фреймворки (2 и 4, 32 и 64), и теперь все работает. Я нашел это, вручную добавив карту сценария для .aspxaspnet_isapi и вуаля. Я не понимаю, почему установка фреймворка этого не делает, если только моя память не подводит меня, и я включил IIS только после установки VS.

ProfK
источник
В качестве альтернативы сделайте это в web.config, как описано здесь stackoverflow.com/questions/2061678/…
bizl 03

Ответы:

120

Может быть, уже поздно, но чаще всего нужно бежать

aspnet_regiis.exe -i  

после установки asp.net. Может, я все равно сделаю это сейчас.

Remy
источник
17
В состав .NET Framework входят два инструмента регистрации IIS; один для стандартных систем и один для 64-битной системы. Инструмент для 64-битных систем находится в каталоге Framework64 каталога Microsoft.NET внутри папки Windows; например, C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727 будет содержать средство регистрации IIS.
Мэтью Лок
3
Если вы получите ошибку the command is not recognized as an internal or external command. Запустите его в командной строке разработчика.
rockXrock
1
Пришлось сделать это для фреймворка 2.0 в папке Framework64. как то, что сказал @matthew Lock
codingNightmares
Также обратите внимание, что если вы должны запустить 2.0 и 4.0, сначала запустите 2.0.
SouthShoreAK
C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 (для v2.0 на x64) - измените Framework64 на Framework для x86, измените v2. * На v4. * Для v4 (перейдите в родительскую папку, чтобы узнать точное имя)
JohnLBevan
63

В дополнение к вышесказанному, если вам нужна поддержка WCF, вам может потребоваться запустить это:

c:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe -i

Замените v3.0 на любую текущую версию вашей платформы.

Adi
источник
1
Примечание для других: я думаю, что в веб-приложениях, использующих пул приложений 4.0, вам нужно снова запустить aspnet_regiis
Тим Габрхель,
1
Для .Net 4 он находится в родительском каталоге. Например: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ ServiceModelReg.exe -i
bytedev 01
58

Я столкнулся с этой ошибкой в ​​IIS 8.5 при попытке доступа к написанной мной службе WCF. Оказывается, на сервере не были включены функции активации WCF HTTP. Поставил галочки и щелкнул через мастер, iisreset, начал работать.

Панель функций Windows

JTR
источник
1
У меня это сработало с IIS 8.5 и Windows 8.1. Мне нужно было включить ASHX, чтобы получить ошибку, описанную в вопросе (HTTP 404.17)
Серджио А.
СПАСИБО! Это сработало для меня. Однако в моем случае мне пришлось включить его для .NET 2.0, так как я использую старую веб-службу
Стефан Васильевич
Это старый пост, но ваше решение спасло мой бекон. Я бы не нашел этого и за миллион лет ... в другом месте. Спасибо.
Джо Шмукер
48

Если вы используете iis 7.5.

Просто зайдите в диспетчер IIS, откройте свойства своего сайта.

Там вы увидите раздел «Сопоставления обработчиков», просто перейдите в этот раздел и найдите «staticFile».

Скорее всего, это последний файл в списке.

Затем щелкните его правой кнопкой мыши и выберите «Вернуть к родительскому».

Я потратил столько часов, когда столкнулся с этим в первый раз, в любом случае это решит вашу проблему.

Кумар
источник
2
Как ответил Ади: этот коммандос делает именно это: c: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation \ ServiceModelReg.exe -i
JDC
Спасибо @Kumar за подсказку! IIS> Сайты> acme.com> Сопоставления обработчиков> Вернуться к родительскому. В моем случае я сделал это для всего домена, а не только для «staticFile». Это сработало для меня и было проще / предпочтительнее, чем запуск исполняемого файла (aspnet_regiis.exe). Почему это предложение не всплывает? =)
jiminy 06
Замечательный совет ... но откуда, черт возьми, эта демонстрация? Я не помню, чтобы встречал такое в предыдущих версиях IIS ...!
Майк Гледхилл,
25

У меня была эта проблема с Windows Server 2012 с ASP .NET 4.5, вы не можете использовать aspnet_regiis.exe, и просто нужно установить ASP .NET 4.5 с помощью мастера добавления ролей и компонентов:

введите описание изображения здесь

Вы можете найти пункт меню «Добавить роли и компоненты» в меню «Управление» в правом углу Диспетчера серверов.

К. Аугусто Пройете
источник
1
Пункт меню «Добавить роли и функции» находится в меню «Управление» в правом углу диспетчера сервера
Александр Трофимов
16

альтернативный текст

должен проверить этот вариант, я полагаю

Jsinh
источник
1
Это просто устанавливает, можно ли обслуживать статический контент. Моя проблема в том, что запросы скриптов сопоставляются со статическим контентом. Если я выключу его, IIS даже не попытается серверить страницу, просто оставив мне пустое место.
ProfK
16

Я решил эту проблему, включив WCF Services

Programs and Features > NET Framework 4.5 Services > WCF Services> HTTP Activation node

Но вы должны признать это, ребята, эта ВСЯ настройка IIS, настройка / предположение / пробная версия и просмотр / проверка этого / попытки, которая тратит 4 или 5 наших дней на попытки найти решение вокруг подхода, ЯВЛЯЕТСЯ ПОЛНОЙ И ПОЛНОЙ ШУТКОЙ.

УДЕРЖИВАЕТСЯ, что «IIS» - САМЫЙ БОЛЬШОЙ УРОВЕНЬ ДОВЕРИЯ, КОТОРЫЙ КОГДА-ЛИБО ПРОИЗВОДИЛИ ЧЕЛОВЕЧЕСТВО

Ричард
источник
1
Все, что вам нужно, это включить функцию статического содержимого для IIS. Это не имеет ничего общего с WCF.
ProfK
1
@ProfK зависит от того, почему вы получаете эту ошибку, разные причины приводят к одной и той же ошибке - если вы получаете ошибку с файлом SVC, настроенным для использования WCF, это исправляет.
JohnLBevan
LOL полностью согласен, портировал несколько сайтов и только что увидел 5 различных типов ошибок, все без фактического сообщения об ошибке или очень загадочного. Пример «Страница не может быть отображена из-за внутренней ошибки сервера» означает, что вы добавили уже существующий тип MIME статического содержимого.
Майк Нельсон
15

Я знаю, что это старый вопрос, но у меня только что это было с приложением 3.5 на моем восстановленном компьютере с Windows 8, и я все еще получал это после, aspnet_regiis -iruи оказалось, что ASP.NET 3.5 не отмечен в функциях разработки приложений (недостаточно репутации для публикации изображения).

bicbmx
источник
2
@bicbmx для изображения, вы можете поделиться ссылкой после загрузки где-нибудь, например, на imgur.com
superjos
12

Есть вероятность, что пул приложений, созданный для вашего приложения по умолчанию, имеет версию 2. Поэтому, хотя вы видите в списке обработчик для расширения .svc, он не работает и рассматривает его как статический файл. Все, что вам нужно, это открыть свойства пула приложений и переключить его на версию 4.

Константин Салаватов
источник
8

Зарегистрируйте asp.net еще раз .... решит вопрос.
введите описание изображения здесь

Перейдите в командную строку Visual Studio
и зарегистрируйте asp.net как windows \ microsoft.net \ Framework [номер версии .Net] \ aspnet_regiis.exe -i

Сунил
источник
2
aspnet_regiis.exe -i отвечает сообщением «Этот параметр не поддерживается в данной версии операционной системы». Почему IIS такая заноза в заднице?
Пол Маккарти,
5

У меня была такая же проблема на машине с Windows 8, которую я настраиваю. Я установил vs2012 до vs2010, который устанавливает .NET framework 4.5. Мои пулы приложений работают в версии 4.0. Я убедился, что я зарегистрировал aspnet для 4.0, используя aspnet_regiis -i. Это все еще не помогло. Затем я открыл возможности Windows и заметил, что в 4.5 добавлен набор под названием «.NET Framework 4.5 Advanced Services». Я включил узел службы WCF и его дочерние элементы, после чего моя конечная точка svc работала правильно. Надеюсь, это поможет людям, которые переходят на Windows 8.

IceNine
источник
Сервер 2012, здесь также IIS8, спасибо за указатель, который вы направили в правильном направлении. Тем, кто заинтересован, мне потребовалось включить роль сервера приложений, а также роль веб-сервера. Я нашел необходимую мне информацию здесь: msdn.microsoft.com/en-us/library/hh167503(v=nav.70).aspx
Джон
3

Я наткнулся на этот вопрос, когда столкнулся с той же проблемой. Основная причина моей проблемы - неправильно настроенный пул приложений. Он был настроен на 2.0 случайно, когда нужно было установить на 4.0. Ответ по следующей ссылке помог мне раскрыть эту проблему: http://forums.iis.net/t/1160143.aspx

Гарнизон Нили
источник
2

У меня такая же проблема. Когда я добавил функцию статического содержимого для IIS, она работает нормально.

jasharbn
источник
2

Еще одно возможное решение, которое я нашел с тем же сообщением об ошибке.

При попытке настроить веб-приложение .NET 4.0 в новый пул приложений я получал эту странную ошибку, сообщающую мне, что он пытался обработать мой aspx-файл с помощью статического обработчика файлов, что не имело смысла.

По какой-то причине ISAPI для .NET 4.0 был отключен в области ограничений ISAPI и CGI на уровне сервера в диспетчере IIS. Все, что требовалось - это включить его. , однако менеджер IIS 7.5 настолько запутан и труден для понимания, что мне потребовалось много времени, чтобы понять это.

Я предполагаю, что, поскольку это было приложение 4.0, которое не могло быть обработано движком 4.0, обработчик статических файлов использовался по умолчанию.

DarrenMB
источник
2

Для других людей, читающих это:

Это может произойти, если версия .Net, которую вы зарегистрировали, не выбрана в «Базовых настройках» пула приложений, прикрепленного к вашему веб-сайту. Например, в пуле приложений вашего сайта выбран .Net v2.0, но вы зарегистрировали v4.0.

b15
источник
2

Для Windows 10 / Framework 4.7 мне пришлось включить HTTP-активацию следующим способом:

  1. Панель управления> Программы и компоненты> Включение и отключение компонентов Windows
  2. В .NET Framework 4.7 Advanced Services разверните WCF Services, выберите, чтобы проверить активацию HTTP и все, что вам нужно при работе с WCF.
  3. Нажмите OK и позвольте установке сделать свое дело, затем откройте административную командную строку и введите команду IISRESET.
Уилл Баффингтон
источник
1

cmd -> щелкните правой кнопкой мыши -> Запуск от имени администратора

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regiis.exe -i

Сафаа Эльгенди
источник
0

Используя диспетчер IIS, я обнаружил, что файлы .aspx были сопоставлены (в разделе «Сопоставления обработчиков») с ISAPI 2.0, хотя ранее был установлен ASP.NET 4.5. Отредактировав их так, чтобы они указывали (также) на исполняемый файл для ISAPI 4.0 64bit, устранили проблему.

Исполняемый файл был найден в% windir% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll

Мэтью Диггинс
источник
0

Я получил это сообщение для приложения на iis 7.5 с классическим пулом приложений, назначенным для .net 2.0. Мне нужно было перейти в Handler Mappings и добавить две карты скриптов, обе были одинаковыми, за исключением имени. одно имя было svc-ISAPI-2.0-64, другое - svc-ISAPI-2.0. Путь запроса был .svc. И исполняемый файл был% SystemRoot% \ Microsoft.NET \ Framework64 \ v2.0.50727 \ aspnet_isapi.dll. я перезапустил iis и все были счастливы

Роберт
источник
0

Один из наихудших сценариев, который я только что решил, - конфликтующая запись в Web.config.

На моем локальном компьютере у меня не было расширения .woff, зарегистрированного в IIS, поэтому я добавил его с помощью Web.config. Но на рабочем сервере .woff зарегистрировал тип пантомимы. Это вызвало конфликт на уровне приложения.

Забавно то, что для этого не регистрируется никаких ошибок. Только догадки (конечно, в первый раз).

Поэтому для меня решением было просто удалить и / или элементы из web.config.

Ashish
источник
0

У меня была такая же проблема, я просто изменил целевую версию фреймворка на веб-сайте на версию, в которой он разработан, То же самое в IIS. Это решило мою проблему. Надеюсь это поможет...

Спасибо

Арджун
источник
0

это могло быть несколько причин, в моем случае в разделе Пул приложений-> предварительная настройка-> Включить 32-битное приложение (должно быть истинным). Раньше было установлено значение false.

Мадхур
источник
-1

Перейдите к своему вкусу .Net и каталог архитектуры ЦП с помощью CMD или powershell.

Введите эту команду: aspnet_regiis –r

Хосе Вега
источник
В Windows Server 2008 R2 написано: «Этот параметр не поддерживается в Windows Vista».
CSharper
Нет опции под названием -r
NishantMittal