Getting an ASP.MVC2/VS2010 application to work in IIS 7.5

30,196

Solution 1

After more checking and trying I noticed in the "Turn Windows features on or off" dialog that "HTTP Errors" and "HTTP Redirection" were missing. This is strange because as far as I can remember this was installed automatically by the Microsoft Web Platform Installer. In any case "HTTP Redirection" seemed like a need-to-have feature when working with MVC. So after I installed it everything seemed to work perfectly.

Solution 2

I've just had this problem, and unfortunately the fix here didn't work for me.

What did work was running this:

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

in a command window...works like a dream now!

(So, is ASP.Net not installed into IIS by default when you install VS2010?)

Solution 3

Add this to your web.config file:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <!-- rest of config -->
</system.webServer>

Solution 4

It is such a pain doing this manually. But definitely doable! I managed it and summed it up in this step by step guide on adding an mvc 2 project to an exisitng web forms solution here. Hope this helps... it took me ages to work though all the config settings and there seem to be so few resources on the subject.

Solution 5

Please note that you must run aspnet_regiis.exe -ir as administrator, it seems obvious but when you are tired of trying things with no success to solve that, you could pass it.

Just to say a big THANK YOU to all the responses, after many hours trying different things, finally I could get work my MVC 2 app in IIS.

Share:
30,196

Related videos on Youtube

Tomme
Author by

Tomme

Updated on July 09, 2022

Comments

  • Tomme
    Tomme almost 2 years

    I've recently downloaded beta 2 of VS2010 and started playing with ASP.NET MVC2. Initial development was done with Casini, but now I wanted to run the application from IIS 7.5 (I'm running Windows 7). I've installed the IIS6 metabase compatiblity and I run VS2010 as administrator so I can use the "Create Virtual Directory" button from the "Web" tab of the project settings. This created the web application entry in IIS, but it doesn't work.

    When I go to the main page (http://localhost/MyMvcApp/) I get a HTTP 403 error. When I go directly to one of the sub-pages (http://localhost/MyMvcApp/Home/) I get an HTTP 404.

    So I guess for some reason the URL routing isn't working. I've already added UrlRouting as a module and a handler to the web.config. In my searches this is offered as a solution for some similair problems. But for me this still doesn't work.

    The interesting part of my web.config looke like this:

    <system.web>
      <compilation debug="true" targetFramework="4.0">
        <assemblies>
          <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
          <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
          <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        </assemblies>
      </compilation>
      <authentication mode="Forms">
        <forms loginUrl="~/Account/LogOn" timeout="2880" />
      </authentication>
      <membership>
        <providers>
          <clear />
          <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
        </providers>
      </membership>
      <profile>
        <providers>
          <clear />
          <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
        </providers>
      </profile>
      <roleManager enabled="false">
        <providers>
          <clear />
          <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
          <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
        </providers>
      </roleManager>
      <pages>
        <namespaces>
          <add namespace="System.Web.Mvc" />
          <add namespace="System.Web.Mvc.Ajax" />
          <add namespace="System.Web.Mvc.Html" />
          <add namespace="System.Web.Routing" />
        </namespaces>
      </pages>
      <httpHandlers>
        <add verb="*" path="*.mvc" validate="false" type="System.Web.Mvc.MvcHttpHandler" />
      </httpHandlers>
      <customErrors mode="Off" />
    </system.web>
    <system.webServer>
      <validation validateIntegratedModeConfiguration="false" />
      <modules runAllManagedModulesForAllRequests="true" >
        <remove name="UrlRoutingModule"/>
        <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </modules>
      <handlers>
        <remove name="MvcHttpHandler" />
        <add name="MvcHttpHandler" preCondition="integratedMode" verb="*" path="*.mvc" type="System.Web.Mvc.MvcHttpHandler" />
        <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </handlers>
      <httpErrors errorMode="Detailed" />
    </system.webServer>
    
  • Christopher Edwards
    Christopher Edwards over 14 years
    Ha! I thought this was the solution I was looking, but sadly it's same symptoms different issue. +1 and thanks anyway :)
  • Admin
    Admin about 14 years
    Weird. I went through the Web Platform Installer and choose defaults (which doesn't include HTTP Redirection) - it worked after that. I'm running Vista/IIS7. Your answer pointed me in the right direction, so thanks :)
  • Jim L
    Jim L almost 14 years
    if IIS was not installed when you installed the framework, you will always need to do this. Not sure if that's your case.
  • user1845001
    user1845001 almost 14 years
    I had the same problems with the RTM versions. Adding HTTP Errors and Redirection did the trick
  • Michael Brown
    Michael Brown almost 13 years
    Well that pissed me off...finally found the solution LOL thanks Stack Overflow
  • Mikey Hogarth
    Mikey Hogarth over 11 years
    My problem was slightly different to the one described by the OP, but this solved my problem too. If you're tearing your hair out i would urge you to try this.
  • JosephDoggie
    JosephDoggie over 9 years
    This works; nowadays (especially Windows 8), you may need also to see: support.microsoft.com/kb/2736284 as they don't want that command to be run anymore...
  • jtate
    jtate over 7 years
    what does this even do? is it safe to run on a production environment while other applications are running in IIS?