当URL中有冒号时,Azure网站会抛出500错误

Mag*_*dal 7 azure azure-web-sites

外部客户端使用包含冒号(:)字符的网址访问我的Azure网站.该请求无效,但在我的旧IIS服务器上会出现404错误.在Azure上,相同的URL将产生500错误.这浪费了我的时间,因为我必须检查日志.这是一个请求的示例:

http://www.example.com/http:/www.example.com

有没有办法在服务器端避免这种行为,而是给出4xx错误?请记住,此问题仅在Azure上,我不控制请求.

Luk*_*brt 1

如果您正在运行 .NET 应用程序,则这是由 ASP.NET HTTP 运行时引起的,更具体地说是由其请求过滤功能引起的。

如果 URL 路径包含任何不允许的字符 ( <,>,*,%,&,:,\\,?),运行时将引发异常,并且由于该异常,IIS 将返回错误代码 500。

System.Web.HttpException:从客户端 (:) 检测到潜在危险的 Request.Path 值。

您可以在文件中配置不允许的字符web.config

<system.web>
    <httpRuntime targetFramework="4.5" requestPathInvalidCharacters="*,%" />
</system.web>
Run Code Online (Sandbox Code Playgroud)

但我会小心,因为这种变化可能会产生一些安全隐患。

  • 不幸的是,这似乎对 Azure 网站没有帮助。我已将 targetFramework 属性更改为 4.6,因为这是那里使用的版本。 (2认同)