允许在Visual Studio Express 2013 for Web中加载JSON文件
我有问题,从Visual Studio Express 2013 for Web的IIS不允许加载* .json文件。 当试图加载一个* .json文件时,我得到一个403 Forbidden和一个帮助页面,如何configurationIIS允许加载JSON文件,但不知道如何处理这些信息/甚至是IIS的位置。
这是错误页面:
HTTP错误404.3 – 未find您正在请求的页面由于扩展configuration而无法投放。 如果页面是脚本,添加一个处理程序。 如果文件应该被下载,添加一个MIME映射。
最可能的原因:处理程序映射可能丢失。 默认情况下,静态文件处理程序处理所有内容。 您尝试使用的function可能未安装。 网站或应用程序未启用适当的MIME映射。 (警告:不要为用户不应下载的内容(如.ASPX页面或.config文件)创buildMIME映射。)如果未安装ASP.NET。
你可以尝试的东西:在system.webServer / handlers:确保当前页面的预期处理程序被映射。 请特别注意前提条件(例如,runtimeVersion,pipelineMode,bitness)并将它们与应用程序池的设置进行比较。 要特别注意预期处理程序行中的印刷错误。 请确认您正在使用的function已安装。 validation是否启用了MIME映射或使用命令行工具appcmd.exe为网站添加MIME映射。 要设置MIMEtypes,请在IIS Express安装目录中运行以下命令:appcmd set config / section:staticContent / + [fileExtension ='string',mimeType ='string']variablesfileExtensionstring是文件扩展名,variablesmimeTypestring是文件types的描述。 例如,为具有扩展名“.xyz”的文件添加MIME映射:appcmd set config / section:staticContent /+[fileExtension='.xyz',mimeType='text/plain']警告:确保这将您的Web服务器添加到列表之前,需要MIME映射。 configuration文件(如.CONFIG)或dynamic脚本页(如.ASP或.ASPX)不应直接下载,而应始终通过处理程序进行处理。 其他文件(如数据库文件或用于存储configuration的文件,如.XML或.MDF)有时用于存储configuration信息。 确定客户端在启用之前是否可以下载这些文件types。 安装ASP.NET。 检查失败的请求跟踪日志以获取有关此错误的其他信息。 欲了解更多信息,请点击此处。
详细的错误信息:模块StaticFileModule通知
ExecuteRequestHandler处理程序StaticFile错误代码0x80070032请求的URL http://localhost:64107/Settings/Settings.json物理pathD:\ GIT \ RepoP_Paneon \ Settings \ Settings.jsonlogin方法匿名login用户匿名请求跟踪目录
C:\ Users \用户stefank \文档\ IISExpress \ TraceLogFiles \ REPOP_PANEON更多信息:当请求的URL的文件扩展名是针对未在服务器上configuration的MIMEtypes时,会发生此错误。 您可以为非dynamic脚本页面,数据库或configuration文件的文件添加文件扩展名的MIMEtypes。 使用处理程序处理这些文件types。 您不应该允许直接下载dynamic脚本页面,数据库或configuration文件。 查看更多信息»
经过一些更多的search和实验后,我发现你必须在Web.config
定义IIS设置。
添加以下configuration之后:
<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>
如果将来IIS已经构build了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>
我们可能需要从本地IIS和远程服务器(如Azure WebSites)区分Visual Studio开发环境(使用IIS Express)。 例如,要特别指定IIS Express,我们在system.webServer/staticContent
下编辑%USERPROFILE%\Documents\IISExpress\config\applicationhost.config
:
<mimeMap fileExtension=".json" mimeType="application/javascript" />
我需要做这个区别,因为我的本地(Intranet)IIS已经有JSON MIMEtypes定义。 所以当我部署到Azure网站时,我在Web.Release.config
使用这个转换:
<system.webServer> <staticContent> <mimeMap fileExtension=".json" mimeType="application/javascript" xdt:Transform="Insert" /> </staticContent> </system.webServer>
- 打开pipe理员权限的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']