• MVC、Web API 请求接口报错“自定义错误模块不能识别此错误。”解决


    环境: win server 2008 R2,IIS7

    错误原因:使用了自定义的状态响应码。

    最近在做接口限流的处理,使用的现成的插件。引入进项目后,本地测试正常,放到服务器上后,请求受限返回响应时 直接返回自定义错误模块不能识别此错误。

    排查半天,添加异常日志记录,并没有发现异常。。经过仔细观察和搜索后终于找到原因。是因为在请求次数达到受限值时,过滤器返回响应的时候,状态码是自定义的 429 Too Many Requests

    ,对于本地开发是好的. 本地IIS 也正常。 放在win server 2008R2 服务器  II7上就不行, 可能是IIS版本太老旧 不支持自定义的状态码吧. 

    解决方法: 如果自定义状态码不是必须条件的话,最简单的就是 响应的时候 把 Response.StatusCode 设置成200就可以啦; 如果非要维持自定义状态码并且要正常响应,那就得手动把错误码添加到IIS里去。

    我已经改了状态码就可以正常响应了,所以第二个方法就没试,引用一下其它文章写得解决步骤作参考:

    把错误代码添加到IIS 7:
    1. 用HTML编辑器或文本编辑器,为错误消息创建一个简单的.htm页面。提供<title>和带一段简短描述的<body>,比如“GIS服务需要token才能访问,参考ArcGIS Server Help,了解如何使用token访问安全的服务。”把.htm文件保存在服务器上。
    2. 点击“开始—所有程序—管理工具”,点击“服务器管理器”,打开服务器管理器程序
    3. 点击“角色”,在右边栏定位到Web服务器(IIS),在列表里检查一下“HTTP 错误”项是否已安装,如果没有安装,点击“添加角色服务”安装HTTP错误角色服务
    4. 在服务器管理器左边,展开角色—Web 服务器(IIS),点击“Internet信息服务(IIS)管理器”,在中间的连接列里,点击服务器名称,在右边窗口会显示服务器主页以及设置的链接。
    5. 在服务器管理器的右边,分组依据选择“类别”,在HTTP 功能组中双击“错误页”,会显示错误代码和页面的列表
    6. 在右边的操作栏里,点击“添加…”,打开对话框,在状态代码里输入499。选中“将静态文件中的内容插入错误响应中”,输入第1步创建的.htm文件路径。点击确定保存设置,然后关闭服务器管理器。
    7. 在另一台电脑上打开浏览器,请求一个需要token的服务的WSDL,比如:
    http://myserver/arcgis/services/MySecuredService/MapServer?wsdl

    应该会自定义的错误页面。

    参考资料:

    http://support.esrichina.com.cn/2008/1022/780.html

    https://ask.dcloud.net.cn/question/481

  • 相关阅读:
    机器学习-线性模型
    机器学习-性能度量
    机器学习-模型评估
    机器学习-术语笔记本
    linux中文在线帮助文档
    【docker】搭建本地私有镜像库(转)
    【VUE】VUE问题记录
    【JS】闭包的本质
    【Maven】Maven使用记录
    【JS】纯JS实现div中的文字双击可编辑
  • 原文地址:https://www.cnblogs.com/myron1024/p/12485501.html
Copyright © 2020-2023  润新知