Сценарій не обслуговується статичним обробником файлів на IIS7.5


130

Я щойно спробував розгорнути свій перший веб-додаток до IIS на своєму ноутбуку Windows 7 Home Premium. Після створення програми мені довелося перейти на Класичний пул додатків, а потім встановити цей пул для Framework 4.0. Тепер я отримую таку помилку:

Помилка HTTP 404.17 - не знайдено Запитаний контент, як видається, є сценарієм і не буде поданий обробником статичних файлів.

Запитана URL-адреса http: // localhost: 80 / pvmms / default.aspx

Я боюся, що обширний Googling не дав мені нічого чіткого чи певного, і зазвичай, я звернувся до експертів.

EDIT: Я підозрюю, що це тому, що для файлів .aspx не існує картонних карток 4.0. Однак, aspnet_regiis навіть дає моєму користувачеві адміністратора палець і каже, що для його запуску потрібні права адміністратора.

EDIT № 2: Я зареєстрував усі рамки (2 і 4, 32 і 64) і всі зараз працюють. Я виявив це, вручну додавши карту скриптів для .aspxaspnet_isapi та voila. Я не розумію, чому встановлення фреймворку не робить цього, якщо мене не виходить з ладу і я включив IIS лише після встановлення VS.


Як альтернативи робити це в web.config , як описано тут stackoverflow.com/questions/2061678 / ...
bizl

Відповіді:


120

Можливо, вже занадто пізно, але частіше за все вам потрібно бігати

aspnet_regiis.exe -i  

після встановлення asp.net. Можливо, я б це все одно зробив зараз.


17
Є два інструменти реєстрації IIS, які постачаються разом із .NET Framework; одна для стандартних систем і одна для 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 будь-якою вашою поточною версією рамки.


1
Зауважте іншим, я думаю, що на веб-сайтах, які використовують пул додатків 4.0, вам потрібно буде запустити aspnet_regiis знову
Тім Габрхель

1
Для .Net 4 його в батьківському каталозі. Наприклад: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ ServiceModelReg.exe -i
bytedev

57

Під час спроби отримати доступ до послуги WCF, яку я написав, я зіткнувся з цією помилкою IIS 8.5. Виявляється, на сервері не було включено функції активації WCF HTTP. Перевірив ящики і клацнув через майстра, iisreset, почав працювати.

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


1
Це працювало для мене з IIS 8.5 та Windows 8.1. Мені потрібно було дозволити ASHX отримати помилку, описану у запитанні (HTTP 404.17)
Серхіо А.

СПАСИБІ! Це працювало для мене. Однак у моєму випадку мені довелося ввімкнути його для .NET 2.0, оскільки я використовую стару веб-службу
Стефан Василевич

Це стара публікація, але ваше рішення врятувало моє бекон. Я б не знайшов цього за мільйон років ... ніде більше. Дякую.
Джо Шмукер

48

Якщо ви використовуєте iis 7.5.

Просто перейдіть до IIS Manager, відкрийте властивості свого веб-сайту.

Ви побачите там розділ "Зображення обробників", просто перейдіть до цього розділу та знайдіть "staticFile".

Найімовірніше, це останній файл у списку.

Потім клацніть правою кнопкою миші та виберіть "Повернутися до батьків".

Я витратив стільки годин, поки зіткнувся з цим вперше, інакше це вирішить вашу проблему.


2
Як відповів Аді: цей командос робить все, що: c: \ Windows \ Microsoft.NET \ Framework \ v3.0 \ Фонд зв’язку Windows \ ServiceModelReg.exe -i
JDC

Дякую @Kumar за пораду! IIS> Сайти> acme.com> Зображення обробника> Повернутися до батьків. У моєму випадку я робив це для всього домену, а не лише для "staticFile". Це працювало для мене і було простішим / кращим, ніж запуск виконуваного файлу (aspnet_regiis.exe). Чому ця пропозиція не кипить далі? =)
jiminy

Блискуча порада ... але звідки, чорт, взяв цей шоуперпер? Я не пам’ятаю, щоб ніколи зустрічався з цим у попередніх версіях IIS ...!
Майк Гледхілл

25

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

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

Ви можете знайти пункт меню "Додати ролі та функції" в меню "Управління", у правому куті Менеджера серверів


1
Пункт меню "Додати ролі та функції" ви можете знайти в меню "Управління" в правому куті менеджера сервера
Олександра Трофімова

16

alt текст

я повинен перевірити цей варіант, я думаю


1
Це просто встановлює, чи можна подавати статичний вміст чи ні. Моя проблема полягає в тому, що запити скриптів відображаються на статичний вміст. Якщо я вимкну, IIS навіть не намагається сервер сторінки, просто даючи мені пусту.
ПрофК

16

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

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

Але ви повинні зізнатися, хлопці, ці ЦІННІ настройки IIS налаштуйте / здогадайтесь / пробуйте і подивіться / спробуйте це / спробуйте, що витрачає 4 або 5 наших днів, намагаючись знайти рішення навколо підходу, це ПОПЕРЕДЖЕННЯ І ВЗНАЧАЛЬНА ЖУРКА.

ВИСТАВЛЕНО, "IIS" - НАЙБІЛЬШИЙ КОНФІДЕНЦІЙНИЙ ТРИК, ЩО ІГРУЄТЬСЯ НА МАНКІНД ДО ДАТИ


1
Все, що вам потрібно, це включити функцію статичного вмісту для IIS. Це не має нічого спільного з WCF.
ПрофК

1
@ProfK залежить від того, чому ви отримуєте цю помилку, різні причини призводять до однієї і тієї ж помилки - якщо ви отримуєте помилку з файлом SVC, налаштованим на використання WCF, викладене вище.
JohnLBevan

LOL повністю згоден, переносить декілька сайтів і щойно бачив 5 різних видів помилок, без фактичного повідомлення про помилку чи дуже криптованого. Приклад "Сторінка не може відображатися, оскільки сталася внутрішня помилка сервера" означає, що ви додали тип mime статичного вмісту, який вже існує.
Майк Нельсон

15

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


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.


Сервер 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, він працює чудово.


2

Ще одне можливе рішення, що я виявив те саме повідомлення про помилку.

Під час спроби встановити веб-додаток .NET 4.0 до нового пулу додатків, я отримав цю дивну помилку, яка сказала мені, що намагається обробити мій файл aspx статичним файловим файлом, що не мало сенсу.

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

Я здогадуюсь, що оскільки це було додатком 4.0, яке не вдалося обробити 4.0 Engine, статичний файл-обробник використовувався за замовчуванням.


2

Для інших людей, які читають це:

Це може статися, якщо версія .Net, яку ви зареєстрували, не є тією, яку вибрано у розділі "Основні налаштування" пулу програм, доданого до вашого веб-сайту. Наприклад, у пулі програм для веб-сайтів вибрано .Net v2.0, але ви зареєстрували v4.0


2

Для Windows 10 / Framework 4.7 мені довелося ввімкнути активацію HTTP за допомогою наступного методу:

  1. Панель управління> Програми та функції> Увімкнення та вимкнення функцій Windows
  2. У розділі Додаткові сервіси .NET Framework 4.7 розгорніть Послуги WCF, виберіть, щоб перевірити активацію HTTP та все, що вам потрібно для роботи з WCF
  3. Натисніть кнопку ОК і дозвольте інсталяції зробити все, а потім відкрийте адміністративний командний рядок і видайте команду 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. Мені потрібно було перейти до Маніпулювання обробників і додати дві карти сценаріїв, обидві були однакові, за винятком назви. одне ім'я - 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 був зареєстрований тип mime. Це спричинило конфлікт на рівні додатків.

Смішна частина - немає помилок для цього. Просто здогадка робота (перший раз звичайно).

Тож для мене рішенням було просто видалити та / або елементи з web.config.


0

У мене був той самий випуск, я просто змінив цільову версію фреймворку на веб-сайті на версію, в якій він розроблений, Саме в IIS. Це вирішило мою проблему. Сподіваюся, це допомагає ...

Спасибі


0

це може бути декілька причин, у моєму випадку в розділі Application pool-> заздалегідь налаштування-> Увімкнути 32-бітну програму (має бути правдою). Раніше вона була встановлена ​​на хибну.


-1

Перейдіть до свого смаку каталогу архітектури .Net та CPU, використовуючи CMD або shellhell

Введіть цю команду: aspnet_regiis –r


У Windows Server 2008 R2 сказано: "Ця опція не підтримується в Windows Vista."
CSharper

Немає варіанту з назвою -r
NishantMittal
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.