55

我有一个问题,来自 Visual Studio Express 2013 for Web 的 IIS 不允许加载 *.json 文件。当尝试加载 *.json 文件时,我得到一个 403 Forbidden 和一个帮助页面,如何配置 IIS 允许加载 JSON 文件,但不知道如何处理这些信息/IIS 所在的位置。

这是错误页面:

HTTP 错误 404.3 - 未找到 由于扩展配置,无法提供您请求的页面。如果页面是脚本,则添加处理程序。如果应该下载文件,请添加 MIME 映射。

最可能的原因:可能缺少处理程序映射。默认情况下,静态文件处理程序处理所有内容。您尝试使用的功能可能未安装。没有为网站或应用程序启用适当的 MIME 映射。(警告:不要为用户不应下载的内容创建 MIME 映射,例如 .ASPX 页面或 .config 文件。)如果未安装 ASP.NET。

您可以尝试的事情: 在 system.webServer/handlers 中:确保映射当前页面的预期处理程序。请特别注意前置条件(例如,runtimeVersion、pipelineMode、bitness)并将它们与您的应用程序池的设置进行比较。请特别注意预期处理程序行中的印刷错误。请验证您尝试使用的功能是否已安装。验证 MIME 映射是否已启用或使用命令行工具 appcmd.exe 为网站添加 MIME 映射。要设置 MIME 类型,请在 IIS Express 安装目录中运行以下命令: appcmd set config /section:staticContent /+[fileExtension='string',mimeType='string'] 变量 fileExtension string 是文件扩展名和变量 mimeType string 是文件类型描述。例如,要为扩展名为“.xyz”的文件添加 MIME 映射: appcmd set config /section:staticContent /+[fileExtension='.xyz',mimeType='text/plain'] 警告:确保这在将 Web 服务器添加到列表之前,需要 MIME 映射。.CONFIG 等配置文件或 .ASP 或 .ASPX 等动态脚本页面不应直接下载,而应始终通过处理程序进行处理。其他文件,如数据库文件或用于存储配置的文件,如 .XML 或 .MDF,有时用于存储配置信息。在启用它们之前确定客户端是否可以下载这些文件类型。安装 ASP.NET。检查失败的请求跟踪日志以获取有关此错误的其他信息。欲了解更多信息,请点击此处。为扩展名为“.xyz”的文件添加 MIME 映射: appcmd set config /section:staticContent /+[fileExtension='.xyz',mimeType='text/plain'] 警告:确保此 MIME 映射是在将其添加到列表之前,您的 Web 服务器需要它。.CONFIG 等配置文件或 .ASP 或 .ASPX 等动态脚本页面不应直接下载,而应始终通过处理程序进行处理。其他文件,如数据库文件或用于存储配置的文件,如 .XML 或 .MDF,有时用于存储配置信息。在启用它们之前确定客户端是否可以下载这些文件类型。安装 ASP.NET。检查失败的请求跟踪日志以获取有关此错误的其他信息。欲了解更多信息,请点击此处。为扩展名为“.xyz”的文件添加 MIME 映射: appcmd set config /section:staticContent /+[fileExtension='.xyz',mimeType='text/plain'] 警告:确保此 MIME 映射是在将其添加到列表之前,您的 Web 服务器需要它。.CONFIG 等配置文件或 .ASP 或 .ASPX 等动态脚本页面不应直接下载,而应始终通过处理程序进行处理。其他文件,如数据库文件或用于存储配置的文件,如 .XML 或 .MDF,有时用于存储配置信息。在启用它们之前确定客户端是否可以下载这些文件类型。安装 ASP.NET。检查失败的请求跟踪日志以获取有关此错误的其他信息。欲了解更多信息,请点击此处。

详细错误信息:Module StaticFileModule Notification
ExecuteRequestHandler Handler StaticFile Error Code 0x80070032 Requested URL http://localhost:64107/Settings/Settings.json 物理路径 D:\GIT\RepoP_Paneon\Settings\Settings.json 登录方式匿名登录用户匿名请求跟踪目录
C:\Users\stefank\Documents\IISExpress\TraceLogFiles\REPOP_PANEON

更多信息:当请求的 URL 的文件扩展名是针对未在服务器上配置的 MIME 类型时,会发生此错误。您可以为不是动态脚本页面、数据库或配置文件的文件添加文件扩展名的 MIME 类型。使用处理程序处理这些文件类型。您不应允许直接下载动态脚本页面、数据库或配置文件。查看更多信息 »

4

4 回答 4

170

经过一番谷歌搜索和试验后,我发现您必须在Web.config.

添加以下配置后:

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

它就像一个魅力。

完整的设置文件示例:

<?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>
于 2013-10-22T12:00:27.670 回答
14

最好添加删除标签,以防将来 IIS 内置 json 支持。这是我的 mimeMap 的 web.config 部分。

<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>
于 2015-08-06T03:55:17.807 回答
6
  • 以管理员权限打开 CMD。
  • 去:

    cd C:\Program Files\IIS Express 或者
    cd C:\Program Files (x86)\IIS Express

  • 运行命令:

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

于 2015-03-13T11:30:30.250 回答
6

我们可能需要将 Visual Studio 开发环境(使用 IIS Express)与本地 IIS 和远程服务器(如 Azure 网站)区分开来。例如,要专门针对 IIS Express,我们%USERPROFILE%\Documents\IISExpress\config\applicationhost.config在下面进行编辑system.webServer/staticContent

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

我需要做出这种区分,因为我的本地(内联网)IIS 已经定义了 JSON mime 类型。因此,当我部署到 Azure 网站时,我会使用以下转换Web.Release.config

<system.webServer>
    <staticContent>
        <mimeMap fileExtension=".json" mimeType="application/javascript" xdt:Transform="Insert" />
    </staticContent>
</system.webServer>
于 2015-06-09T22:35:03.163 回答