IIS 7.5 Static Content Not Loading: MIME Type and File Handling Solutions


19 views

When IIS 7.5 serves ASPX pages flawlessly but chokes on static files, we're typically looking at either MIME type misconfigurations or deeper permission issues. Here's what I discovered while troubleshooting a similar production server:



dism /online /get-features | find "Static-Content"

The most common culprit is missing MIME types. Verify these essential types exist:


<configuration>
  <system.webServer>
    <staticContent>
      <mimeMap fileExtension=".html" mimeType="text/html" />
      <mimeMap fileExtension=".css" mimeType="text/css" />
      <mimeMap fileExtension=".js" mimeType="application/javascript" />
      <mimeMap fileExtension=".png" mimeType="image/png" />
    </staticContent>
  </system.webServer>
</configuration>

Sometimes ASP.NET handlers hijack static file requests:


<system.webServer>
  <handlers>
    <remove name="StaticFile" />
    <add name="StaticFile" path="*" verb="*" 
         modules="StaticFileModule" 
         resourceType="Either" 
         requireAccess="Read" />
  </handlers>
</system.webServer>

Beyond basic IUSR permissions, try:


icacls "C:\inetpub\wwwroot\mysite" /grant "IIS_IUSRS:(OI)(CI)(RX)"
icacls "C:\inetpub\wwwroot\mysite" /grant "USERS:(OI)(CI)(RX)"

Quick health checks:


Get-WebConfigurationProperty -Filter "/system.webServer/staticContent/mimeMap" -Name *
Test-WebConfiguration -VirtualPath "/" -Item "Static Content"

Even with .NET 4.0 Integrated mode, check:


appcmd list apppool /text:*
appcmd set config /section:applicationPools /[name='MyAppPool'].enable32BitAppOnWin64:false

When your IIS 7.5 serves ASPX pages flawlessly but chokes on basic static files, you're likely facing one of these fundamental issues:

HTTP/1.1 200 OK
Content-Type: text/plain  // Wrong! Should be image/png or text/css
Server: Microsoft-IIS/7.5

First, verify these critical settings:

  1. Static Content Role Service:
    Server Manager > Roles > Web Server (IIS) > Add Role Services
    Check "Static Content" under Common HTTP Features
  2. Handler Mappings:
    <system.webServer>
      <handlers>
        <add name="StaticFile" path="*" verb="*" 
             modules="StaticFileModule" resourceType="Either" />
      </handlers>
    </system.webServer>

Missing MIME types force IIS to default to text/plain. Add these essential types:

<staticContent>
  <mimeMap fileExtension=".html" mimeType="text/html" />
  <mimeMap fileExtension=".css" mimeType="text/css" />
  <mimeMap fileExtension=".js" mimeType="application/javascript" />
  <mimeMap fileExtension=".png" mimeType="image/png" />
  <mimeMap fileExtension=".jpg" mimeType="image/jpeg" />
</staticContent>

Beyond IUSR and IIS_IUSR, check these often-overlooked permissions:

  • NTFS permissions on parent folders
  • Application pool identity (try setting to ApplicationPoolIdentity)
  • Special permissions like "List folder contents"

Enable tracing to pinpoint exactly where IIS fails:

appcmd.exe set config -section:system.webServer/tracing /enabled:"true" /commit:apphost
appcmd.exe configure trace "Default Web Site" /enable /path:*.html

For stubborn cases, reset all IIS components:

%windir%\system32\inetsrv\appcmd list app /text:name | findstr MyApp
%windir%\system32\inetsrv\appcmd delete app MyApp/
iisreset /reboot

Remember to backup configurations before drastic measures!