IIS 7'de ASP MVC şu sonuçlarla sonuçlanır: HTTP Hatası 403.14 - Yasak


146

Bir ASP MVC web projesi geliştiriyorum. Artık beni bir IIS7 geliştirme ortasına (bazı özellikleri kontrol etmek için) dağıtmaya zorlayan bir gereksinimim var. Web sitesinin URL'sini her yazmaya çalıştığımda yukarıda belirtilen hata mesajını alıyorum. (Not: geliştirme makinesi: Vista Home Premium, IIS7)

Şimdiye kadar ne yaptım:

HOSTS dosyası düzenlendi (C: \ WINDOWS \ system32 \ drivers \ etc \ hosts).

İçine iki alan adı koyun (127.0.0.1 domain1.com & 127.0.0.1 domain2.com).

Bir c: \ websites \ dirOfApplication klasörü oluşturuldu ve Visual Studio 8 içinden bu klasöre dağıtıldı.

IIS7'de, domain1.com ana bilgisayar adı ve yukarıdaki uygulama klasörü ile yeni bir site oluşturdu.

Web tarayıcısında domain1.com adresini yazmak yukarıdaki hataya neden olur (HTTP Hatası 403.14 - Yasak - Web sunucusu, bu dizinin içeriğini listelemeyecek şekilde yapılandırılmıştır.)

Sanırım bir şeyi kaçırıyorum ama ne olduğunu bilmiyorum! System.Web.Mvc, System.Web.Abstraction & System.Web.Routing dosyalarını aynı sonuçla dağıtmaya çalıştı. Ne zaman F5'e basmaya ve uygulamayı çalıştırmaya çalışsam iyi çalışıyor!


Yanıtlar:


224

Belki birisi için yararlıdır: Uygulamamı .NET framework 4.5 ile MVC 4'e dönüştürdükten ve IIS 7.0 ile sunucuma çerçeveyi kurduktan sonra, soruda bahsedilen aynı 'yasak' hatayla karşılaştım. Yukarıda açıklanan tüm seçenekleri boşuna denedim, fark ettiğimde

<system.webServer>
 <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

web.config dosyamda eksikti. Bunu ekledikten sonra her şey çalıştı. Basit ama gözden kaçması kolay ...

DÜZENLE:

Elbette yukarıdaki çözüm işe yarayacaktır, ancak bu gerçekten de kaynak israfıdır. Chris Herring'in yorumlarda belirttiği gibi yönlendirme modülünü eklemenin daha iyi olacağını düşünüyorum .

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>

2
It turns out that when I uninstalled a NuGet package, that it removed the runAllManagedModulesForAllRequests="true" from my Web.config. Thanks you for mentioning this before I spent all night trying to figure this out.
Schmalls

3
THIS!! Arrrrgh I spent/wasted a whole day trying to get this to work until I found your answer, thank you! What is odd is that it would run on IIS on my local machine just fine, but not on the production box and they're both running IIS7.5
Glenn Slaven

1
That was it. Cassette Nuget uninstall sometimes removes it. Thanks.
Zachary Scott

8
try to avoid using this setting by adding the routing module - britishdeveloper.co.uk/2010/06/…
Chris Herring

6
I love the answer comment "Maybe it's useful to someone"... lol... Looks like it's useful to a TON of people, myself included.
Paul

126

Answered on SO here, question: 403 - Forbidden on basic MVC 3 deploy on iis7.5

Run aspnet_regiis -i. Often I've found you need to do that to get 4.0 apps to work. Open a command prompt as an Administrator (right click the command prompt icon and select Run as Administrator):

cd \
cd Windows\Microsoft.NET\Framework\v4.xxx.xxx
aspnet_regiis -i

Once it has installed and registered, make sure you application is using an application pool that is set to .NET 4.0.

UPDATE: I just found an issue with this command. Using -i updated all application pools to ASP.NET 4.0.

Using aspnet_regiis -ir installs the version of ASP.NET but does not change any web applications to this version. You may also want to review the -iru option.


Worked for me too. After running aspnet_regiis -i command UrlMappingModule was installed in IIS.
Manish Gupta

After installing IIS, I needed to run aspnet_regiis to get everything working even though .NET 4 appeared to be registered already.
Brian

If the framework was installed prior to IIS, then yes you will need to aspnet_regiis.
Brettski

2
Don't forget that for a 64 bit system it's "Framework64". I.e., Windows\Microsoft.NET\Framework64\v4.xxx.xxx
grahamesd

For this use, 64 or 32 bit version of aspnet_regiis doesn't matter. Some special cases are listed here: msdn.microsoft.com/en-us/library/k6h9cz8h.aspx#Anchor_1
Brettski

34

I too ran into this error. All the configuration and permissions were correct. But I forgot to copy Global.asax to the server, and that's what gave the 403 error.


In my case, I had moved it accidentally with the mouse without noticing. Thanks!
Mathias Lykkegaard Lorenzen

Just wasted 2 hours because I'd overlooked copying this file over, after wiping out my web documents folder!
Steven Sproat

11

It's because of being too sure about what you (me) are doing!

On my machine there is IIS 7 installed but the required ASP.NET component (Control Panel->Programs->Turn On/Off->ASP.NET) was not.

So installing this solved the problem


Yes, for my case. My Windows 10 Local IIS ASP.NET is not turned on. Go to Turn Windows Features on of off > Internet Information Services > World Wide Web Services > Application Development Features > Tick ASP.NET 3.5 & ASP.NET 4.8
sky91

9

I had the same issue. This Microsoft support article fixed it for me.
https://support.microsoft.com/en-us/help/2023146/mvc-2-and-asp.net-4-web-forms-applications-that-use-url-routing-might-return-http-404-errors-when-they-attempt-to-process-extensionless-urls-on-iis-7-and-iis-7.5

In the "Turn Windows Features On or Off" dialog box of the Windows Control Panel "Programs and Features" application, perform the following steps:

  1. Navigate to the following node: Internet Information Services --> World Wide Web Services --> Common HTTP Features
  2. Make sure that the "HTTP Error Redirection" option is selected.

-or-

  1. Navigate to the following node: Internet Information Services --> World Wide Web Services --> Performance Features
  2. Make sure that the "Static Content Compression" option is selected. After either option has been selected, click "OK" to save changes.

Re-enabling either the HTTP Error Redirection module or the Static Content Compression module ensures that ASP.NET and IIS correctly synchronize HTTP pipeline events. This enables the URL routing module to process extensionsless URLs.


7

Try to apply the following settings shown below:

1) Give the necessary permission to the IIS_IUSRS user on IIS Server (Right click on the web site then Edit Permissions > Security).

enter image description here

2) If you use .NET Framework 4, be sure that .NET Framework version is v4.0 on the Application Pool that your web site uses.

enter image description here

3) Open Commanp Prompt as administrator and run iisreset command in order to restart IIS Server.

Hope this helps...


Tip: If you still get the permission errors after this then you may need to do an iisreset in the cmd as Admin after doing this to get your site running in IIS.
Cory Koch

6

In my case following approach helped me out:

  1. aspnet_regiis -i in Windows\Microsoft.Net\Framework

  2. Adding modules to system.webServer

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
        ...
    </system.webServer>
    

I am guessing you omitted the framework. But open cmd as admin, and run aspnet_regiis -i in Windows\Microsoft.Net\Framework\v4.0.30319
DeadlyChambers

5

Please also check, if you are running x64, that you have enabled 32-bit applications in the app pool settings

enter image description here


3

On the Uncheck "Precompile During Publishing" - I was getting the 403.14 error on a web service I had just written in VS2015 so I rewrote it in VS2013 and was getting the same error. In both cases I had "Precompile During Publishing" on. I unchecked it but was still getting the error. In my case I also had "Delete all existing files prior to publish" but was not deleting everything from the target directory on the server before copying the new published files there. If you don't do that - a "PrecompiledApp.config" file is left behind which causes the problem. Once I deleted that file I was golden on both the VS2013 and VS2015 versions of my web service.


2

I tried everything here; nothing worked. Problem was in my Web.config file, somehow dependent assembly binding got changed from minimum 1 to minimum 0.

<!-- was -->
<runtime>
    <assemblyBinding>
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" />
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />


<!-- should have been -->
                <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />

1

Please note sometimes wrong Managed pipeline mode will cause this error. There are two choices to select integrated and classic.


1

How to Fix “HTTP Error 403.14 – Forbidden The Web server is configured to not list the contents of this directory”

This error occurs when you have MVC 2+ running hosted on IIS 7+, this is because ASP.NET 4 was not registered in IIS. In my case I was creating a MVC 3 project and hosting it on IIS 7.5.

To fix it, make sure you have MVC 2 or above and .Net Framework 4.0 installed, then run a command prompt as administrator and type the following line:

32bit (x86)

%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -ir

64bit (x64)

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir



1

If the top answers don't work, look for a config named PrecompiledApp.config in the hosting directory and delete it if it exists. This file prevents IISExpress and LocalIIS to work properly. (And I think that's a bug) The content of the file in my case was:

<precompiledApp version="2" updatable="true"/>

And I'm 100% positive that was the problem with my case since I tried everything in 2 hours and tested lots of times with this config.

One more thing: You cannot use aspnet_regiis in newer versions of Windows and IIS so try

dism /online /enable-feature /featurename:IIS-ASPNET45 /all

1

Control Panel > turn windows features on or off > Web Server > Application Development

Check ASP.NET


1

NOTHING WORKED IN THE WORLD FOR ME,

I found out the problem and this might be helpful for someone,

Applicable if you are using Plesk, I just turned this thing off and everything started to work.

Yet, I do not know what is the exact issue with it.

enter image description here


0

I have also encountered this same error, despite all the provided solutions for the following reasons:

  • Missing DLLs
  • Database connection string points to an inaccessible server.

0

In my case web.config and all files except for the /bin folder were missing (not copied somehow).
Silly, but that was the last thing I have checked.



0

With ASP.NET project with C# 4.5 I've solved such problem by installing ASP.NET extension in Web Platform Installer


0

Also one more things can be possible

install .net framework 4.0 manually

This solution is for IIS7 on window 7

open cmd with administration previleges

go to directory "C:\Windows\Microsoft.NET\Framework\v4.0.30319"

type aspnet_regiis.exe -i

got to your inet manager by typing in run command "inetmgr"

refresh your IIS7

reload the site.


0

I know you had this problem in an internal host, but I had experienced such an issue before in an external host and in my case it had it's own resolution, maybe it could save somebody's time:

In fact my website was STOPPED by some reason which currently I'm not aware of, to check it out if you have the same problem, in WebsitePanel main page go to Web -> Websites then select the domain name of your website from the list, after that in the right side of the page just opened, check if you see the word STARTED, else if you see the word STOPPED, make it get started again. That's all.


0

I know this is an old topic, but you can also get this error (when you are debugging) if you have a folder named the same as a route in a controller.

For instance, if you have a UserController, with a route called /User and you ALSO have a folder in your solution called "User" then IISExpress will try to browse the folder instead of showing your view.


0

After trying every solution suggested here, I found yet another possible solution: URLScan

The IIS had WebDAV disabled, even in the web.config of my application, WebDAV's handler and module was removed. PUTs still returned a 403 - Forbidden without any log entries in the IIS logs. (GET / POST worked fine).

Turns out the IIS had an active ISAPI Filter (the URLScan) enabled which prevented all PUTs. After removing URLScan, it worked for me.


0

My situation was completely different than any of these and the 403:Forbidden error message was a little bit of a red herring.

If your Application_Start() function in the Global.asax module tries to access the web.config and an entry that it's referencing isn't there, IIS chokes and (for some reason) throws the 403:Forbidden error message.

Double-check that you aren't missing an entry in the web.config file that's attempting to be accessed in your Global.asax module.


0

In case you're like me and have an application using NHibernate and the above answers have not resolved your issue.

You should look at the connection string in your application; possibly in the webconfig file to ensure it is correct.


-1

I have been using Identity Impersonate:

<system.web>
    <identity impersonate="true" userName="domain\username" password="password"/>
</system.Web>

When pushing up to the server you have to give the username access to the Temporary ASP.NET Files folder so it can read/write/execute properly:

C:\Windows\Microsoft.NET\"frameworkversion"\"aspversion"\Temporary ASP.NET Files

Obviously replace "frameworkversion" and "aspversion" with the versions you are using.


-1

Step 1: Select the Site For which the HTTP Error is produced in IIS and then click on Directory Browsing as shown in the image below:

Step 2: In the Directory Browsing Window in IIS click on Enable in Actions on the right side as shown in the diagram below:

Now Directory Browsing is enabled for your asp.net website, just restart the web application in IIS and Browse the site in your browser and see the result.



-1

I had this issue but it was fixed easily by going to the Internet Information Services (IIS) Manager, double clicking Directory Browsing and clicking Enable.

In my case, I could access files directly but could not access folders.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.