Allow loading of JSON files in Visual Studio Express 2013 for Web

IisVisual Studio-2013

Iis Problem Overview


I have the problem, that the IIS from Visual Studio Express 2013 for Web doesn't allow the loading of *.json files. When trying to load a *.json file I get a 403 Forbidden and a help page how to configure the IIS allow the loading of JSON files, but don't know what to do with this information / where the IIS is even located.

This is the error page:

> HTTP Error 404.3 - Not Found The page you are requesting cannot be > served because of the extension configuration. If the page is a > script, add a handler. If the file should be downloaded, add a MIME > map. > > Most likely causes: It is possible that a handler mapping is missing. > By default, the static file handler processes all content. The feature > you are trying to use may not be installed. The appropriate MIME map > is not enabled for the Web site or application. (Warning: Do not > create a MIME map for content that users should not download, such as > .ASPX pages or .config files.) If ASP.NET is not installed. > > Things you can try: In system.webServer/handlers: Ensure that the > expected handler for the current page is mapped. Pay extra attention > to preconditions (for example, runtimeVersion, pipelineMode, bitness) > and compare them to the settings for your application pool. Pay extra > attention to typographical errors in the expected handler line. Please > verify that the feature you are trying to use is installed. Verify > that the MIME map is enabled or add the MIME map for the Web site > using the command-line tool appcmd.exe. To set a MIME type, run the > following command in the IIS Express install directory: appcmd set > config /section:staticContent > /+[fileExtension='string',mimeType='string'] The variable > fileExtension string is the file name extension and the variable > mimeType string is the file type description. For example, to add a > MIME map for a file which has the extension ".xyz": appcmd set config > /section:staticContent /+[fileExtension='.xyz',mimeType='text/plain'] > Warning: Ensure that this MIME mapping is needed for your Web server > before adding it to the list. Configuration files such as .CONFIG or > dynamic scripting pages such as .ASP or .ASPX, should not be > downloaded directly and should always be processed through a handler. > Other files such as database files or those used to store > configuration, like .XML or .MDF, are sometimes used to store > configuration information. Determine if clients can download these > file types before enabling them. Install ASP.NET. Check the failed > request tracing logs for additional information about this error. For > more information, click here. > > Detailed Error Information: Module StaticFileModule Notification > ExecuteRequestHandler Handler StaticFile Error Code 0x80070032 > Requested URL http: //localhost:64107/Settings/Settings.json > Physical Path D:\GIT\RepoP_Paneon\Settings\Settings.json Logon > Method Anonymous Logon User Anonymous Request Tracing Directory > C:\Users\stefank\Documents\IISExpress\TraceLogFiles\REPOP_PANEON > > More Information: This error occurs when the file extension of the > requested URL is for a MIME type that is not configured on the server. > You can add a MIME type for the file extension for files that are not > dynamic scripting pages, database, or configuration files. Process > those file types using a handler. You should not allows direct > downloads of dynamic scripting pages, database or configuration files. > View more information »

Iis Solutions


Solution 1 - Iis

After some more googling, and experimenting I found out, that you have to define IIS settings in the Web.config.

After adding the following configuration:

  <system.webServer>
    <staticContent>
      <mimeMap fileExtension=".json" mimeType="application/json" />
    </staticContent>
  </system.webServer>

it works like a charm.

Full setup file example:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0"/>
  </system.web>
  <system.webServer>
    <staticContent>
      <mimeMap fileExtension=".json" mimeType="application/json" />
    </staticContent>
  </system.webServer>
</configuration>

Solution 2 - Iis

Better add remove tag in case future IIS has build in json support. This is my web.config section of mimeMap.

<system.webServer>
  <staticContent>
      <remove fileExtension=".woff" />
      <remove fileExtension=".woff2" />
      <remove fileExtension=".json" />
      <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
      <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
      <mimeMap fileExtension=".json" mimeType="application/json" />
  </staticContent>
<system.webServer>

Solution 3 - Iis

  • Open CMD with administrator privilages.

  • Go to:

    cd C:\Program Files\IIS Express or
    cd C:\Program Files (x86)\IIS Express

  • Run command:

    appcmd set config /section:staticContent /+[fileExtension='JSON',mimeType='application/x-javascript']

Solution 4 - Iis

We may need to distinguish the Visual Studio development environment (with IIS Express) from local IIS and a remote server (like Azure WebSites). To specifically target IIS Express, for example, we edit %USERPROFILE%\Documents\IISExpress\config\applicationhost.config under system.webServer/staticContent:

<mimeMap fileExtension=".json" mimeType="application/javascript" />

I need to make this distinction because my local (intranet) IIS already has the JSON mime type defined. So when I deploy to Azure websites I use this transformation in Web.Release.config:

<system.webServer>
    <staticContent>
        <mimeMap fileExtension=".json" mimeType="application/javascript" xdt:Transform="Insert" />
    </staticContent>
</system.webServer>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionStefanView Question on Stackoverflow
Solution 1 - IisStefanView Answer on Stackoverflow
Solution 2 - Iisuser1021364View Answer on Stackoverflow
Solution 3 - IismattinsaltoView Answer on Stackoverflow
Solution 4 - IisrasxView Answer on Stackoverflow