Q:

403.14 Error on IIS 10 ASP.NET 4.5.2 MVC Application

I'm currently running into an issue for a couple days now where I am trying to set up a very basic MVC application on my computer (and eventually on a remote server).  However, I keep running into a multitude of issues. 
Currently, I am trying to hit localhost/webapp3 and it is giving me a 403.14 error.  The application works fine from IIS Express within Visual Studio 2016.  I disabled Directory browsing because I want my controller to display a view at that page, not just list the contents. 
I'm new to IIS and this is my current setup:

Some of the code (just prebuilt code that I haven't even touched):
Web.config:
<? xml version="1.0" encoding="utf-8"? >
<!-- 
  For more information on how to configure your ASP.NET application, please visit
  https://go.microsoft.com/fwlink/?LinkId=301880
  -->
<configuration>
    <appSettings>
        <add key="webpages:Version" value="3.0.0.0" />
        <add key="webpages:Enabled" value="false" />
        <add key="ClientValidationEnabled" value="true" />
        <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    </appSettings>
    <system.web>
        <compilation debug="true" targetFramework="4.5.2" />
        <httpRuntime targetFramework="4.5.2" />
        <httpModules>
            <add name="ApplicationInsightsWebTracking" type="Microsoft. ApplicationInsights. Web. ApplicationInsightsHttpModule, Microsoft. AI.Web" />
        </httpModules>
    </system.web>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="Newtonsoft. Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
                <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System. Web. Optimization" publicKeyToken="31bf3856ad364e35" />
                <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
                <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System. Web. Helpers" publicKeyToken="31bf3856ad364e35" />
                <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System. Web. WebPages" publicKeyToken="31bf3856ad364e35" />
                <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System. Web. Mvc" publicKeyToken="31bf3856ad364e35" />
                <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <modules runAllManagedModulesForAllRequests="true"/>
    </system.webServer>
    <system.codedom>
        <compilers>
            <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft. CodeDom. Providers. DotNetCompilerPlatform. CSharpCodeProvider, Microsoft. CodeDom. Providers. DotNetCompilerPlatform, Version=1.0.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
            <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft. CodeDom. Providers. DotNetCompilerPlatform. VBCodeProvider, Microsoft. CodeDom. Providers. DotNetCompilerPlatform, Version=1.0.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
        </compilers>
    </system.codedom>
</configuration>

HomeController.cs
using System;
using System. Collections. Generic;
using System. Linq;
using System. Web;
using System. Web. Mvc;

namespace WebApplication3.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult About()
        {
            ViewBag. Message = "Your application description page."; 

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag. Message = "Your contact page."; 

            return View();
        }
    }
}

things I've tried:

enabling directory browsing
<modules runAllManagedModulesForAllRequests="true"/>
Ensuring my application pool is set to integrated
Adding IIS_USRS to my website/application directory. 

I've been running into a combination of 403 errors and 404 errors (not sure if my routes are getting picked up?) 
thanks! 

A:

The express configuration works quite a bit different than an actual production configuration with Internet Information System.   Bindings and permissions are the root of most issues.   To alleviate them you should be able to do the following. 

Stop the default web site. 
Create a directory such as, C:/Program Files/Sample Application
Inside of IIS, create an application pool Sample Application make sure it defaults to 4.0 and integrated. 
Create a site, point to your new application pool, ensure 80 is the port, leave bottom field empty (unless you want to modify windows loopback). 
Go to your directory you created, right click the top level add the user IIS AppPool/Sample Application. 
Dump application into directory. 

If you type localhost in the browser it should default to 80 and should hit your controller.   You may have to tweak your global default route, so that it hits but that is all you need to setup the server.   Your 403.3 authorize permission errors should disappear.   
The error basically is saying the application pool can not read the web.config file where the file is being hosted.