zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Winform WebBrowser引用IE版本问题
    MarkdownPad怎么显示表格
    C# winForm里窗体嵌套
    code first 创建数据库
    mvc+webapi+dapper+ef codefirst项目搭建
    MongoDB:逐渐变得无关紧要
    fiddler打开后 浏览器就上不了网的解决方法
    Android学习系列(16)--App列表之圆角ListView
    Android应用程序结构总结
    android程序监听home键与电源键
  • 原文地址:https://www.cnblogs.com/myron1024/p/12485501.html
Copyright © 2011-2022 走看看