Asp.Net 6+IIS环境下,如何修改超长URL请求的错误响应码?
关于IIS处理超长URL返回错误码的问题
我正在开发一个实现特定API的Web服务器,该API所属协会提供了测试用例用于验证实现。其中一个测试用例为:
5.3.2.12 鲁棒性测试:大资源ID
该测试验证发送含超长资源ID的URL参数的HTTP请求时,服务器的错误处理是否正确。
请求的URL示例如下:
https://localhost:443/api/v2/functions/be13789-1f1e-47d0-8f8a-000000000005ebe13789-1f1e-47d0-8f8a-000000000005ebe13789-1f1e-47d0-8f8a-000000000005ebe13789-1f1e-47d0-8f8a-000000000005ebe13789-1f1e-47d0-8f8a-000000000005ebe13789-1f1e-47d0-8f8a-000000000005ebe13789-1f1e-47d0-8f8a-000000000005ebe13789-1f1e-47d0-8f8a-000000000005ebe13789-1f1e-47d0-8f8a-000000000005ebe13789-1f1e-47d0-8f8a-000000000005ebe13789-1f1e-47d0-8f8a-000000000005ebe13789-1f1e-47d0-8f8a-000000000005ebe13789-1f1e-47d0-8f8a-000000000005ebe13789-1f1e-47d0-8f8a-000000000005ebe13789-1f1e-47d0-8f8a-000000000005ebe13789-1f1e-47d0-8f8a-000000000005ebe13789-1f1e-47d0-8f8a-000000000005ebe13789-1f1e-47d0-8f8a-000000000005ebe13789-1f1e-47d0-8f8a-000000000005ebe13789-1f1e-47d0-8f8a-000000000005
该测试要求服务器在URL过长时返回正确的错误码(当前测试要求返回405,我已询问是否应为414)。
我使用Asp.Net 6开发服务器,测试中始终返回400错误(Bad Request)。找不到修改该行为的设置,不确定是否IIS在请求到达应用前就拦截了它。已启用IIS日志,但请求未出现在inetpub/logs/LogFiles的日志文件中。
我的问题是:能否让IIS在此场景下返回不同的错误码,或者能否在应用中处理该错误?
已尝试的操作:
- 启用IIS日志,确认请求是否传递到站点(未找到)
- 在控制器中添加过滤器,尝试捕获异常
- 检查是否调用了开发错误页面
- 现有中间件中的断点未触发
编辑1:我现在确定请求从未到达应用程序。使用Windows上IIS生成的默认站点即可复现该错误,将上述完整路径复制到浏览器访问http://localhost时,同样返回400错误。
编辑2:按照@YurongDai的建议,我为IIS站点启用了失败请求跟踪,使用默认路径\logs\FailedReqLogFiles。文件夹已创建,但在浏览器中打开上述URL时未生成日志文件。
内容的提问来源于stack exchange,提问作者Bugfish
相关产品推荐
相关产品推荐

