博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多一个“点”给IIS与ASP.NET带来的问题
阅读量:6832 次
发布时间:2019-06-26

本文共 767 字,大约阅读时间需要 2 分钟。

【IIS】

一个网站如果用的是IIS(假设没有在前端7层负载均衡中对这种场景进行特殊处理),只要在浏览器地址栏中输入这个网站的域名并加上“.”,比如:www.cnblogs.com. ,就会引发“Bad Request - Invalid Hostname”错误:

www.cnblogs.com.

由于这个错误信息是IIS底层直接返回的,如果只从IIS的角度,你没有任何方法可以对这个错误信息进行定制与处理,包括微软自己。

www.microsoft.com.

要解决这个问题,只能在IIS前端加上非基于IIS的7层负载均衡(或反向代理),比如Nginx、Tengine,然后针对这个场景对主机名进行重写或者重定向、显示自定义错误信息。

我们目前虽然用了基于Tengine的7层负载均衡(阿里云SLB),但是SLB并没有提供针对这个问题的解决方案,所以只能束手无策。

【ASP.NET】

 如果一个网站用的是ASP.NET(假设没有对以“.”结尾的URL进行重写),只要在一个URL之后加上“.”,ASP.NET中所有的自定义错误设置都形同虚设。

结尾点号引发的404错误

微软msdn博客站点也有这个问题:

asp.net url end with dot

要解决这个问题,需要借助IIS的URL重写组件(比如Url Rewrite Module)针对这种情况进行URL重写。

而我们用Url Rewrite Module解决这个问题的过程中发现竟然只能Rewrite,不能Redirect,

Url Rewrite Rule 

如果Action type改为Redirect,依然会显示之前的错误页面。

这两个历史悠久的问题更让我们对ASP.NET vNext多了一份期待。

【更新】

之前写的URL重写规则不能处理以多个点结局的情况,改进后的重写规则如下:

转载于:https://www.cnblogs.com/dudu/p/3803819.html

你可能感兴趣的文章
java_queue
查看>>
JavaScript escape encodeURI
查看>>
Exchange模式功能
查看>>
Tomcat性能优化(二) 启动参数设置
查看>>
Today See>
查看>>
kiddouk/redisco
查看>>
THEOS makefile
查看>>
基本名字与地址转换
查看>>
深入理解javascript闭包
查看>>
关于分页选中问题-超越昨天的自己系列(9)
查看>>
XML解析中的namespace初探
查看>>
从C#到Objective-C,循序渐进学习苹果开发(2)--Objective-C和C#的差异
查看>>
Jquery实现鼠标拖拽效果
查看>>
标准差(standard deviation)和标准误差(standard error)你能解释清楚吗?
查看>>
[WPF]有滑动效果的进度条
查看>>
妙趣横生的算法--顺序表
查看>>
Xcode 5.0.2 下载地址
查看>>
Z.Studio高级成衣定制(双井店)价格,地址(图)-北京-大众点评网
查看>>
定时器
查看>>
【LeetCode】120. Triangle (3 solutions)
查看>>