2013-10-22 89 views
55

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

这是错误页:

HTTP错误404.3 - 未找到您请求不能 提供服务,因为扩展配置的页面。如果页面是 脚本,请添加处理程序。如果该文件应该被下载,添加一个MIME 地图。

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

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

详细错误信息:模块StaticFileModule通知
ExecuteRequestHandler处理程序StaticFile错误代码0x80070032 请求的URL的http://localhost:64107/Settings/Settings.json 物理路径d:\ GIT \ RepoP_Paneon \设置\设置。JSON登录 方法匿名登录用户匿名请求跟踪目录
C:\用户\ stefank \文档\ IISExpress \ TraceLogFiles \ REPOP_PANEON

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

回答

164

经过一些google搜索,并尝试我发现,你必须定义在Web.config IIS设置。

添加如下配置:

<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> 
+6

有趣的是,这并不适合我。我使用VS 2013,IIS Express,IE 11,.NET 4.5.1。 – jpierson

+0

你的配置文件看起来如何? – Stefan

+0

这也不适用于我。 .json文件仍然作为html /文本MIME类型 – codeepic

5
  • 打开CMD与管理员的privilages。
  • 转到:

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

  • 运行命令:

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

6

我们可能需要区分在Visual Studio开发环境(IIS快递)从本地IIS和一个远程服务器(如Azure WebSites)。专门针对IIS Express为例,我们编辑%USERPROFILE%\Documents\IISExpress\config\applicationhost.configsystem.webServer/staticContent

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

我需要做这种区分,因为我的本地(Intranet)IIS已经定义的JSON MIME类型。所以,当我部署到Azure的网站,我用这种转型Web.Release.config

<system.webServer> 
    <staticContent> 
     <mimeMap fileExtension=".json" mimeType="application/javascript" xdt:Transform="Insert" /> 
    </staticContent> 
</system.webServer> 
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> 
相关问题