使用Prometheus过程中,请求的metrics_path带有参数:/metrics?key=abcdefg,
请求时,地址自动編碼,變成/metrics%03Fkey=abcdefg,報404異常。
从客户端(?)中检测到有潜在危险的 Request.Path 值。说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.HttpException: 从客户端(?)中检测到有潜在危险的 Request.Path 值。
源错误:
执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
堆栈跟踪:
[HttpException (0x80004005): 从客户端(?)中检测到有潜在危险的 Request.Path 值。]
System.Web.HttpRequest.ValidateInputIfRequiredByConfig() +678
System.Web.PipelineStepManager.ValidateHelper(HttpContext context) +52
版本信息:Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.7.3062.0
方案1:httpRuntime requestPathInvalidCharacters=""
结果:无法找到资源。说明: HTTP 404。您正在查找的资源(或者它的一个依赖项)可能已被移除,或其名称已更改,或暂时不可用。请检查以下 URL 并确保其拼写正确。
方案2:pages validateRequest="false"
结果:从客户端(?)中检测到有潜在危险的 Request.Path 值。
方案3:httpRuntime requestValidationMode="2.0"
结果:从客户端(?)中检测到有潜在危险的 Request.Path 值。
方案4:反射,無法處理。
方案5:stackoverflow,得到正解
https://stackoverflow.com/questions/40172415/question-mark-in-prometheus-metrics-path-gets-encoded