ASP MVC in IIS 7 results in: HTTP Error 403.14 - Forbidden

Viewed 171617

I'm developing an ASP MVC web project. Now I have a requirement which forces me to deploy to an IIS7 inmiddle of development (to check some features). I'm getting the above mentioned error message whenever I try to type the URL of the web site. (Note: development machine: Vista Home Premium, IIS7)

What I have done until now:

Edited the HOSTS file (C:\WINDOWS\system32\drivers\etc\hosts).

Put two domains in it (127.0.0.1 domain1.com & 127.0.0.1 domain2.com).

Created a folder c:\websites\dirOfApplication and deployed from within Visual Studio 8 to this folder.

In IIS7 created a new site with host name domain1.com and application folder the above.

Typing the address domain1.com in Web browser results in the above error (HTTP Error 403.14 - Forbidden - The Web server is configured to not list the contents of this directory.)

I think I'm missing something but don't know what! Tryed to deploy the files System.Web.Mvc, System.Web.Abstraction & System.Web.Routing wit the same outcome. Whenever I try to hit F5 and run the application, it works fine!

34 Answers

I read through every answer here looking for something that worked before I realized that I'm using IIS 10 (on Windows 10 version 2004) and this question is about IIS 7 and almost a decade old.

With that said, run this from an elevated command prompt:

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

The /all will automatically enable the dependent parent features: IIS-ISAPIFilter, IIS-ISAPIExtensions, and IIS-NetFxExtensibility45.

After this, you'll notice two new (in my environment at least) application pool names mentioned .NET v4.5. ASP.NET web apps that were previously using the DefaultAppPool will just work.

enter image description here

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

Check ASP.NET

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

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.

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.

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.

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.

Adding yet another answer here. If you'r eon Windows 2016 Server running IIS 10.0, it may be because IIS is not installed properly. Here's what I'd suggest if you find yourself here.

  1. In Visual Studio, verify the .NET framework version that you used to develop the app. Right click the project, properties page, application tab. Target Framework. In my case it was 4.6.1.

  2. On the web server, Google 'download .net framework 4.6.1' and go to the MS download page which should properly determine the version you need by your browser user agent. In my case it was X64.

  3. Run the installer. Note that it is safe to do so even if you think it may already be there. It will say 'already installed' if it is.

Note: Now you have to ensure that it is properly 'enabled' as a Windows feature. You also have to verify that ASP.NET IIS components are properly installed and enabled too.

  1. Again on the web server, Go to Server Manager, Add roles and features, then choose role based or feature based. Then click Next.

  2. Ensure that the local server is selected on the destination server tab and click next.

  3. On the server roles tab, expand Web Server IIS and Application Development. I neabled everything but server side includes and Websocket protocols.

  4. Under Management Tools, I chose to enable everything (which includes IIS 6 MMC) because of certain legacy features I wanted, but that's another post.

No reboot was required in my case. Hope this helps somebody.

Related