24
votes

I have a problem with an ASP.NET MVC site.

These are the details:

  1. ASP.NET MVC 2
  2. ASP.NET 4 integrated pipeline
  3. IIS 7.5 on Windows Web Server 2008 R2

Whenever I make a request for the app I get the "HTTP Error 404.0 - Not Found"-error and the detailed error information shows it is the static file handler that reports the error:

  • Module: IIS Web Core
  • Notification: MapRequestHandler
  • Handler: StaticFile
  • Error Code: 0x80070002

meaning that the request never entered the MVC stack.

I should note that the IIS already serves a ASP.NET MVC 3 on the same app pool and a MVC 2 on a ASP.ENT 2 app pool. So it's the combo ASP.NET 2 on the ASP.NET 4 app pool that are giving me headaches.

Basically I want to upgrade the app from ASP.NET MVC 2 on a ASP.NET 2.0 app pool to a ASP.NET MVC 2 on a ASP.NET 4.0 app pool.

So any ideas?

5

5 Answers

31
votes

I see you fixed your issue, but for anyone googling:

I had this issue and in my case I just needed to register ASP.NET 4 with IIS. I was deleting and re-adding webs to fix other issues and simply forgot to do that. The command that worked for me was:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis -i

Your own .net version may be different, especially if you are in the future, so the above path may not be exactly right.

13
votes

I had the same problem when I installed IIS after installing Visual Studio, etc.

I was able to fix the problem by changing my Web.config file, adding the runAllManagedModulesForAllRequests="true" to the <modules> tag:

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

(More details/copied from here: http://www.west-wind.com/weblog/posts/2011/Mar/27/ASPNET-Routing-not-working-on-IIS-70)

0
votes

Chris' answer got me to check whether the app pool was actually configured for .net 4. Sure enough, this server defaults to creating 32-bit .net 2 pools in classic mode.

Ensure that your app is using 4.0 and you'll probably want Integrated pipeline for all new development. 32/64 is mainly up to your dependencies. The default is leaving "allow 32 bit allocations" set to false.

0
votes

In my case, a similar error was thrown because StaticFile Handler was disabled / not working properly. I eventually fixed it by removing the handler and re-adding it through the web.config. Also, in case of a 403.3 error, change the RequireAccess-property value from "Write" to "Read"

<configuration>
    <system.webServer>
        <handlers>
           <remove name="StaticFile"
            <add 
                name="StaticFile" 
                path="*" verb="*" 
                modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" 
                resourceType="Either" 
                requireAccess="Read" />
        </handlers>
    </system.webServer>
</configuration>
-7
votes

So I found the error. There was a left over default document in the root, which isn't necessary for apps using the integrated pipeline. Also some changes to Global.ascx and route registration was neessary, but after that it worked.