让IIS Express支持Json文件

   2023-02-10 学习力0
核心提示:  同事在做一个web系统的二级联动时将联动数据保存在一个Json文件中,当他将代码提交后,到我机子上运行时总是报该文件404错误,反复检查路径以及权限并没有问题。将问题反馈给他时,他表示在他机子上的本地IIS上运行并没有什么问题。。。等等,本地IIS,而

  同事在做一个web系统的二级联动时将联动数据保存在一个Json文件中,当他将代码提交后,到我机子上运行时总是报该文件404错误,反复检查路径以及权限并没有问题。将问题反馈给他时,他表示在他机子上的本地IIS上运行并没有什么问题。。。等等,本地IIS,而我是运行在IIS Express中,显然由于本地IIS和IIS Express的配置差异导致的对Json文件处理方式不同导致的。

解决问题

  我并没有马上去搜索本地IIS和IIS Express的差异,而是先翻了下他的代码:

1  $.getJSON("../Content/file/resource.json", function (data)
2       {
3         //balablaablabn
4           })

  使用的$.getJson(),(这个不常用,还是找下具体用法吧)。w3school的解释是通过 HTTP GET 请求载入 JSON 数据。语法:jQuery.getJSON(url,data,success(data,status,xhr)),相当于  

$.ajax({
  url: url,
  data: data,
  success: callback,
  dataType: json
});

  OK,返回数据类型为json的ajax请求,并没有对文件格式有特殊要求,既然这样,那我将其json文件修改成js文件应该就可以。

  实践证明将其resource.json文件改成resource.js即可,就不需关注IIS和IIS Express两兄弟有什么不同了。

  将我的修改想法告诉了同事,没想到此君表示,既然是IIS Express为什么要改他的代码,这个json文件存储的只是json数据,坚决不同意修改文件类型。-_-! -_-!

问题再解决

  好吧,看来只有找找”两兄弟“的问题了,寻找解决方案......

  不一会同事通过内部通讯工具发来一个链接,链接是园子的一篇关于这个问题解决方案的文章。(对于这位“固执”而又积极寻找解决方案的同事我只能说一个字:屌 !)

  既然前辈们都已踩过坑了,那就好办。根据前辈的解决方案是IIS Express没有配置Json文件的处理程序,只要增加对应配置即可,IIS Express 对应配置文件夹为:

  “%UserProfile%\Documents\IISExpress\config\“

这个文件夹有3个文件:applicationhost.config、aspnet.config、redirection.config。这里配置的文件是applicationhost.config。打开文件,找到配置节location>system.webServer>handlers,就是它了,在handlers下增加一个对于json文件的配置:

<handlers accessPolicy="Read, Script">           
     <!-- 添加对Json文件的支持 -->
     <add name="Json" path="*.json" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%IIS_BIN%\asp.dll" resourceType="File" />
</handlers>

保存配置文件,重启IIS Express,成功!

  问题到此基本算是解决了,但是不安分的我到是对applicationhost.config这个配置文件有了兴趣。好吧,这个文件里面配置内容还是很丰富的,而且里面许多配置都能子啊IIS管理里工具里面见到(他们本来就是兄弟好嘛>_<!!!)。然后又去微软社区看了下关于IIS Express的介绍,大致系统了解了下IIS Express。

  我发现在location同一级的system.webServer节点下有个"staticContent"节点,节点里是mime类型列表,这个不是静态内容列表么,IIS对静态对允许的静态内容不是直接下载的么,那JSON文件也应该像JS文件一样直接下载的。在对于js类型文件后面增加一个对于json文件的配置:

<staticContent lockAttributes="isDocFooterFileName">
    <!--新增的-->    
    <mimeMap fileExtension=".json" mimeType="application/javascript" />
    <!--已有的-->
    <mimeMap fileExtension=".js" mimeType="application/javascript" />
</staticContent>

  再验证下这种方式是否有效,嘿嘿i额,居然成功了,那就说明此方法有效。

总结

  总结一下,对于这个问题,目前我已找到三种解决方法:

  1)将json文件修改为js文件;

  2)修改IIS Express配置文件,在配置节location>system.webServer>handlers下添加对json文件的处理节点:

    <add name="Json" path="*.json" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%IIS_BIN%\asp.dll" resourceType="File" />;

  3)修改IIS Express配置文件,在配置节system.webServer>staticContent下添加json类型文件作为静态文件处理:

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

参考

  1)http://www.cnblogs.com/lvduanbing/p/3325921.html

  2)http://www.iis.net/learn/extensions/introduction-to-iis-express

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • Server Application Error IIS密码不同步 MS D
    最近电脑出了一系列的问题,IIS能启动,但是不能正常访问.提示错误.记得没事养成看系统日志的习惯,先看系统日志有一些红色的叉叉,出现的频率非常高.MS DTC 事务管理器启动失败。LogInit 返回错误 0x2。具体的是什么服务,我就不写了,百度一下非常多. 我想出现这
    03-08
  • Visual Studio-IIS Express 支持局域网访问配置
    转自:http://www.itnose.net/detail/6132793.html注意:本人测试后,发现个问题,不知是我个人的VS问题还是普遍的。就是将配置文件中的新增的节点注释后,会导致页面调试的时候很难加载,一直转圈,出不来。痛苦使用Visual Studio开发Web网页的时候有这样的
    03-08
  • 开发 Web 服务 (SOAP) 并将其发布到 IIS
    开发 Web 服务 (SOAP) 并将其发布到 IIS
    1.首先我想将 SOAP 通信服务从用 Java/Axsis2 实现的遗留系统迁移到 C#我想将 SOAP 通信服务发布到 IIS 并使用 Soap UI 检查客户端的操作使用 .NET Framework 中包含的 ASP.NET asmx 提高开发效率.NETX 不包含 SOAP 通信工具二、开发环境 Visual Studio 2022.
    03-08
  • vs添加到附加进程调试(IIS页面调试) vs附加到进程调试不了
    vs添加到附加进程调试(IIS页面调试) vs附加到
    有时候单元测试不是很方便,通过页面调试接口会更直观,也跟容易发现问题(尤其是在页面传参的时候),这时vs添加到附加进程的调试方式就显得尤为重要了!步骤如下:1、首先是通过IIS建立网站,(前提是要先安装iis,网上教程很多且详尽)这里我已HYS.BT.V3项
    02-12
  • VS项目发布到本地IIS vs部署项目
    VS项目发布到本地IIS vs部署项目
      ①web项目,开发工具Visual Studio,语言C#  ②本地IIS,手机上或其他用户在和本地在同一个局域网(并不绝对是指同一个WIFI)内访问,同时要把防火墙关掉  ③IIS全名Internet Information Services,用来发布网站 二、步骤    1在开始菜单中搜索I
    02-10
  • Windows7下安装IIS出现“出现错误,并非所有的功能被成功更改
    Windows7下安装IIS出现“出现错误,并非所有的功
     1、开始,搜索输入UAC--选择 “更改用户账户控制设置” 2、调到最低 3、打开控制面板--》程序--》打开或关闭windows功能,去掉图里的2个选项,点确定,重启 4、重启后,再把这2个勾选上,注:indernet信息服务很多子项不勾选,需要手动展开到最底层进行
    02-10
  • asp.net mvc 发布到IIS测试,路径的引用问题
    asp.net mvc 发布到IIS测试,路径的引用问题
    之前做的一个ASP.NET MVCI应用程序,今天发布到IIS中进行测试,结果发现之前的很多引用的脚本文件和CSS文件都显示不正常,仔细一看原来是路径引用的问题。IIS里建的虚拟目录,但我在引用文件的时候都是使用的是站点根目录的方式,当时没有考虑到,我是菜鸟大
    02-10
  • IIS中实现http自动转换到https
    IIS中实现http自动转换到https修改以下文件:C:\WINDOWS\Help\iisHelp\common\403-4.htm 为以下内容!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"HTMLHEADTITLE该页必须通过安全通道查看/TITLEMETA HTTP-EQUIV
    02-10
  • IIS短文件名漏洞 IIS主要漏洞
    IIS短文件名漏洞 IIS主要漏洞
    Internet Information Services(IIS,互联网信息服务)是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件。危害:攻击者可以利用“~”字符猜解或遍历
    02-10
  • 错误">IIS 发布网站出现<compilation debug="tr
    参考:http://www.mamicode.com/info-detail-1180214.html原因是环境只安装到.net Framework 4.5 的版本(.net版本向下兼容 )解决方案:升级.net Framework修改为compilation debug="true" targetFramework="4.5"
    02-10
点击排行