记”Uri.IsWellFormedUriString”中的BUG
场景
先上逻辑代码
1: /// <summary>
2: /// 图片真实地址
3: /// </summary>
4: public string FullImagePath
5: {
6: get
7: {
8: _fullImagePath = ImagePath;
9: if (string.IsNullOrWhiteSpace(_fullImagePath))
10: return _fullImagePath;
11: if (
Uri
.IsWellFormedUriString(_fullImagePath, UriKind.RelativeOrAbsolute))
12: return _fullImagePath;
13: if (_fullImagePath.StartsWith("~/"))
14: {
15: return _fullImagePath.Remove(0, 2).Insert(0, HttpContext.Current.Request.ApplicationPath);
16: }
17: return _fullImagePath;
18: }
19: }
这边提供了一个FullImagePath的属性,用来解析最终的图片路径,其中ImagePath属性值格式为:”~/xxx/xx/xx.jpg”这边需要做的就是把~/解析为服务器路径。
在进行解析之前用了”Uri.IsWellFormedUriString”方法用来判断Url是否合法,如果合法则不进行转换。该方法的说明如下:通过尝试用字符串构造一个 URI 来指示字符串是否为格式良好的,并确保字符串不需要进一步转义。
方法说明如下:
这边问题出现了,在正式环境上该方法会把带有”~/”开头的Url验证为True,而在本地(本人的开发机器上)带有”~/”开头的Url会返回False。
解决办法
这边采用的是第二种办法,因为这种可以简单实现的逻辑不必去要求服务器打补丁。
1.打上.net framework补丁
具体什么补丁我也没细查,也因为是前段时间的事情今天才写所以也不太好排查,有朋友知道的可以回复一下。
2.修改逻辑
可以把这段验证去掉。
结语(大家可以不看,没营养)
最近换了工作一切皆需要调整,所以有一段时间没有写Blog了,但后面会尽量写一些东西,其实心底已经有好几个点想写了,比如:Autofac中可能会引发内存泄漏的问题,EF不当操作引起的内存泄漏等等等等,一切都怪时间啊,今天也是趁着装环境的时候顺便上来写了一些。最后的最后大家和谐讨论,想大家不要钻牛角尖去纠结什么代码逻辑,纠结什么HttpContext.Current之类的东西,主要是分享一下这个BUG。
记”Uri.IsWellFormedUriString”中的BUG的更多相关文章
- 表与表的关系把RD搞乱了,记一个Procedure中的bug
就是6张表的关联查询,写了一个存储过程,使用4层for来处理 bug:最后一个for中,两张表的关联条件少了一个,结果数据多查了. 排查办法:使用dbms_output.printline('');每 ...
- 记一个CRenderTarget中的BUG及解决办法
转载请注明出处:http://www.cnblogs.com/Ray1024 一.问题描述 在MFC中使用Direct2D有现成的方法,在Visual Studio 2010 SP1及以上环境中MFC ...
- 那些盒模型在IE6中的BUG们,工程狮的你可曾遇到过?
HTML5学堂 那些盒模型在IE6中的BUG们,工程狮的你可曾遇到过? IE6已经渐渐的开始退出浏览器的历史舞台.虽然当年IE6作为微软的一款利器击败网景,但之后也因为版本的持续不更新而被火狐和谷歌三 ...
- 转:移动开发中一些bug及解决方案
网页开发要面对各种各样的浏览器,让人很头疼,而移动开发中,你不但要面对浏览器,还要面对各种版本的手机,iOS好一点,而安卓就五花八门了,你可能在开发中也被它们折磨过,或者正在被它们折磨,我在这里说几个 ...
- 写代码的心得,怎么减少编程中的 bug?
遭遇 bug 的时候,理性的程序员会说:这个 bug 能复现吗? 自负型:这不可能,在我这是好好的. 经验型:不应该,以前怎么没问题? 幻想型:可能是数据有问题. 无辜型:我好几个星期都没碰这块代码了 ...
- 谨记给UpdatePanel中动态添加的控件赋ID
原文:谨记给UpdatePanel中动态添加的控件赋ID 昨天下定决 心对上次做的布局编辑器控件加以改进,其中最主要变化的就是要完全使用ASP.NET AJAX!但是很遗憾,虽然耳闻已久,但目前对AS ...
- MySQL用source命令导入不记入binlog中【原创】
试验环境,MySQL主主复制 主库10.72.16.112 从库10.72.16.50 一直有个疑问,利用sql_log_bin=0可以临时在客户端停止将操作记入binlog中,如果使用source命 ...
- 解決中文地址Uri.IsWellFormedUriString返回false
數字和大小寫字母都ok,但是中文地址就會有問題 public bool IslocalURL(string url) { if (string.IsNullOrEmpty(url)) { return ...
- 记一次线上bug排查-quartz线程调度相关
记一次线上bug排查,与各位共同探讨. 概述:使用quartz做的定时任务,正式生产环境有个任务延迟了1小时之久才触发.在这一小时里各种排查找不出问题,直到延迟时间结束了,该任务才珊珊触发.原因主要就 ...
随机推荐
- MySQL在创建相同表结构时as和like 使用的区别
1.MySQL的复制相同表结构方法: 1)create table table_name as select * from table1 where 1=2 (或者limit 0): 2) crea ...
- 我所理解的 惠普云 (HP Cloud)
HP (惠普)于2014年5月27日宣布了它的新的云产品线 HP Helion,并宣布在接下来的两年时间内向该产品线投资10亿美金.应该说这是一笔很大的投入,充分显示了HP 在云这个领域的决心.本文试 ...
- [转]ionic Accordion list three levels
简化后的主要代码: $scope.groups = []; for (var i = 0; i < 2; i++) { $scope.groups[i] = { name: i, items: ...
- fiddler对手机进行抓包
1.安装fiddler web debugger 2.Tools -->telerik fiddler options-->connections,勾选allow remote compu ...
- Fisker大师用ZBrush制作兽人萨尔全过程
十二年前,暴雪推出第一款网络游戏<魔兽世界>,以迅雷不及掩耳盗铃之势风靡全球:十二年后,魔兽终于改编成大电影,同样掀起了一场巨大的风暴, 接二连三打破了多项票房纪录.纵观游戏史,很难找出一 ...
- 边工作边刷题:70天一遍leetcode: day 82
Closest Binary Search Tree Value 要点: https://repl.it/CfhL/1 # Definition for a binary tree node. # c ...
- python中list注意事项
今天写python出了一个小插曲,具体情况见代码: >>> a = [1,2,3] >>> import queue >>> q = queue. ...
- 2014 Super Training #4 G What day is that day? --两种方法
原题: ZOJ 3785 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3785 题意:当天是星期六,问经过1^1+2^2+ ...
- maven - pom.xml 聚合(父)工程 基本内容演示
企业开发中所用到的基本jar包以及插件都已在此 可以自己根据实际情况酌情增减 <project xmlns="http://maven.apache.org/POM/4.0.0&quo ...
- java11-4 字符串的遍历以及字符串中各类字符的统计
1.需求:获取字符串中的每一个字符 分析: A:如何能够拿到每一个字符呢? char charAt(int index) B:我怎么知道字符到底有多少个呢? int length() publi ...