Я создал веб-приложение .net4.5 ASP.NET MVC4, которое отлично работает локально (сервер IIS Express и dev), но как только я разверну его на своем веб-сервере, оно выдает ошибку 403. Я установил .Net 4.5RC на сервер и даже попробовал то,
aspnet_regiis -i
что все рекомендовали для решения своих проблем с предыдущими версиями MVC / .Net, но это не помогло.
Любые идеи?
РЕДАКТИРОВАТЬ : Дополнительная информация о ситуации. Сервер 32-битный, и у меня есть еще 4 приложения MVC3, которые работают нормально. Это просто мое приложение MVC4 не работает.
.net
asp.net-mvc
asp.net-mvc-4
iis
http-status-code-403
mithun_daa
источник
источник
Ответы:
Пытаться
<system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer>
Через
/server/405395/unable-to-get-anything-except-403-from-a-net-4-5-website
источник
Ошибка 403.14 - это код ошибки HTTP, из-за которой не разрешено отображать содержимое каталога. Пожалуйста, убедитесь, что
Обычно a и d - это самые большие проблемы, связанные с развертыванием MVC в IIS.
источник
Возможно ... Если вы случайно воспользуетесь мастером публикации (как это сделал я), установите флажок «Предварительная компиляция во время публикации» (как это сделал я) и увидите те же симптомы ...
Да, я бью себя по голове, но после снятия отметки с этого поля, казалось бы, не связанного с этим параметра, все описанные симптомы исчезают после повторного развертывания.
Надеюсь, это исправит некоторых людей.
источник
Windows-> Пуск -> Включение и выключение функций widows
Убедитесь, что вы отметили необходимые параметры в
источник
Перед применением
runAllManagedModulesForAllRequests="true"/>
рассмотрите ссылку ниже, которая предлагает менее радикальную альтернативу. В сообщении автор предлагает следующие изменения в локальном файле web.config:
<system.webServer> <modules> <remove name="UrlRoutingModule-4.0" /> <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" /> </modules>
http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html
источник
В Visual Studio 2012 есть Refactor -> Rename Bug, который ошибочно переименовал «id» внутри буквального строкового значения параметра url в моем RouteConfig.cs. Это вызвало ошибку 403,14 при новой и в остальном правильной установке как в Windows Server 2012, так и в Windows Server 2008 R2.
routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
был изменен на
routes.MapRoute( name: "Default", url: "{controller}/{action}/{renamed_text}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
источник
null
дляname
параметра избежать придумайте имя для каждого маршрута. Оказывается, это также иногда вызывает ошибку 403 (только в нашей среде prod, Win Server 2008 R2 с .NET 4.5.1, MVC 5 в проекте VS2013. Чтобы решить эту проблему, я добавил имя для каждого маршрута.Вы также можете получить 403, если при тестировании с сервером разработки вы используете интегрированный конвейер, а затем устанавливаете его в классическом режиме конвейера на свой действующий веб-сервер IIS 7.5, также мне не хватало моей папки app_data, которая также требовалась
источник
Если вы используете IIS 8.5 в Windows 8 или Server 2012, вы можете обнаружить, что запуск mvc 4/5 (.net 4.5) не работает в виртуальном каталоге. Если вы создадите запись локального хоста в файле хоста, чтобы указать на ваш локальный компьютер, а затем укажите новый локальный веб-сайт IIS в эту папку (с соответствующей записью заголовка хоста), вы обнаружите, что тогда она работает.
источник
<system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer>
Вы можете использовать приведенный выше код
источник
Я установил пул приложений нового приложения
DefaultAppPool
в IIS, который, очевидно, используетClassic
конвейер с.NET v.2.0
.Чтобы решить проблему, я создал новый пул приложений, используя
Integrated
конвейер и.NET v4.0
. только для этого нового приложения, а затем все начало работать, как ожидалось.Не забудьте назначить этот новый пул приложений приложению. Выберите приложение в IIS, щелкните,
Basic Settings
а затем выберите новый пул приложений для приложения.источник
в последнее время я чаще всего вижу IIS, позволяющий запускать 32-битные приложения.
Это то, что вы пробовали. в противном случае нам понадобится дополнительная информация о версиях рабочего и dev-сервера
источник
У меня немного другая проблема, на сервере 2012 я как-то забыл включить asp.net 4.5, поэтому, если у вас есть эта проблема, дважды проверьте, что вы ее включили.
источник
Я использую Windows Server 2012 R2 в Azure и ASP.NET 4.5, IIS 8
Я решил эту проблему, удалив все элементы ASP.NET в разделе «Программы и компоненты», а затем переустановив ASP.NET таким же образом с помощью диспетчера серверов с помощью «Добавить роли и компоненты»: выбрал установку на основе ролей или функций, выбрал мой сервер, а затем для выбора роли сервера был выбран веб-сервер (IIS) / веб-сервер / разработка приложений, затем щелкнул ASP.NET 4.5, подтвердил установку необходимого компонента, а затем переустановил ASP.NET 4.5.
Мои предыдущие поиски заставили меня поверить, что проблема на самом деле связана с проблемой регистрации в ASP.NET. В более ранних версиях ASP.NET на самом деле есть служебная программа, которую можно запустить для регистрации ASP.NET без переустановки, но она, похоже, больше не доступна.
источник
Решаю проблему, открывая визуальную студию, расширяя ссылки и меняя свойство «Копировать локально» на «Истина».
Я обнаружил это, сравнивая библиотеки DLL старой версии с DLL моей новой версии (которая не работала)
источник
В моем случае страницей моего приложения по умолчанию был index.html, который отсутствовал в параметрах документа по умолчанию. Его добавление устранило ошибку 403.14 Forbidden.
источник
В моем случае проблема была вызвана настраиваемым атрибутом ActionFilterAttribute, который был своего рода атрибутом глобального фильтра. Атрибут создал экземпляр службы через Autofac, но в конструкторе произошел сбой службы:
public ActionFilterAttribute() { _service = ContainerManager.Resolve<IService>(); } public class Service: IService { public Service() { throw new Exception('Oops!'); } }
источник
В моем случае ни компоненты Windows, ни функции
aspnet_regiis -i
не работали. После нескольких часов копания в Интернете я нашел собственное решение:В диспетчере IIS в модулях я изменил наследование на локальное в узле UrlRoutingModule-4.0:
В web.config я вставил несколько советов с этого форума:
<system.webServer> <modules runAllManagedModulesForAllRequests="true"> <remove name="UrlRoutingModule-4.0"></remove> <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition=""></add> </modules> </system.webServer>
Надеюсь, это поможет
источник