场景

先上逻辑代码

   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的更多相关文章

  1. 表与表的关系把RD搞乱了,记一个Procedure中的bug

    就是6张表的关联查询,写了一个存储过程,使用4层for来处理 bug:最后一个for中,两张表的关联条件少了一个,结果数据多查了. 排查办法:使用dbms_output.printline('');每 ...

  2. 记一个CRenderTarget中的BUG及解决办法

    转载请注明出处:http://www.cnblogs.com/Ray1024 一.问题描述 在MFC中使用Direct2D有现成的方法,在Visual Studio 2010 SP1及以上环境中MFC ...

  3. 那些盒模型在IE6中的BUG们,工程狮的你可曾遇到过?

    HTML5学堂 那些盒模型在IE6中的BUG们,工程狮的你可曾遇到过? IE6已经渐渐的开始退出浏览器的历史舞台.虽然当年IE6作为微软的一款利器击败网景,但之后也因为版本的持续不更新而被火狐和谷歌三 ...

  4. 转:移动开发中一些bug及解决方案

    网页开发要面对各种各样的浏览器,让人很头疼,而移动开发中,你不但要面对浏览器,还要面对各种版本的手机,iOS好一点,而安卓就五花八门了,你可能在开发中也被它们折磨过,或者正在被它们折磨,我在这里说几个 ...

  5. 写代码的心得,怎么减少编程中的 bug?

    遭遇 bug 的时候,理性的程序员会说:这个 bug 能复现吗? 自负型:这不可能,在我这是好好的. 经验型:不应该,以前怎么没问题? 幻想型:可能是数据有问题. 无辜型:我好几个星期都没碰这块代码了 ...

  6. 谨记给UpdatePanel中动态添加的控件赋ID

    原文:谨记给UpdatePanel中动态添加的控件赋ID 昨天下定决 心对上次做的布局编辑器控件加以改进,其中最主要变化的就是要完全使用ASP.NET AJAX!但是很遗憾,虽然耳闻已久,但目前对AS ...

  7. MySQL用source命令导入不记入binlog中【原创】

    试验环境,MySQL主主复制 主库10.72.16.112 从库10.72.16.50 一直有个疑问,利用sql_log_bin=0可以临时在客户端停止将操作记入binlog中,如果使用source命 ...

  8. 解決中文地址Uri.IsWellFormedUriString返回false

    數字和大小寫字母都ok,但是中文地址就會有問題 public bool IslocalURL(string url) { if (string.IsNullOrEmpty(url)) { return ...

  9. 记一次线上bug排查-quartz线程调度相关

    记一次线上bug排查,与各位共同探讨. 概述:使用quartz做的定时任务,正式生产环境有个任务延迟了1小时之久才触发.在这一小时里各种排查找不出问题,直到延迟时间结束了,该任务才珊珊触发.原因主要就 ...

随机推荐

  1. 【原创】大众点评监控平台cat的性能分析

    由于工作的原因,或者说我们之前内部监控设计和实现有点不满足现有的研发需求,所以调研了一下大众点评开源出来的cat这一套监控系统. 今天我们就来实验一把,cat的客户端埋点在我们的程序流程中上报数据到c ...

  2. ThinkPHP 获取get post参数与I方法

    传统方式获取变量 $id = $_GET['id']; // 获取get变量 $name = $_POST['name']; // 获取post变量 $value = $_SESSION['var'] ...

  3. Hadoop Browse the filesystem 无效处理

    当我们安装好并正常运行hdfs后输入http://xxxxxxxxx:50070会进入下图所示的页面. 其中Browse the filesystem 是查看文件系统的入口. 但是在发现这个链接一直无 ...

  4. C++ 第一个C++程序

    #include <iostream> // C++自带的标准头文件都是没有.h的 // 就相当于C语言的<stdio.h> // 提前使用命名空间std using name ...

  5. ubuntu自带的gedit编辑器添加Markdown预览插件

    gedit安装Markdown Preview Ubuntu自带的gedit编辑器也是有很强大的功能的,且支持插件的安装.对于喜欢用Markdown的我来说,这当然是很好的了,gedit本身 就支持M ...

  6. 搭建docker私有仓库,建立k8s集群

    服务器IP角色分布 192.168.5.2 etcd server 192.168.5.2 kubernetes master 192.168.5.3 kubernetes node 192.168. ...

  7. uva 1605 building for UN ——yhx

    The United Nations has decided to build a new headquarters in Saint Petersburg, Russia. It will have ...

  8. Network client/server

    <Beginning Linux Programming_4th>  chapter 15 Sockets 1  A simple local client/server 1)  clie ...

  9. 该怎么快速完成ZBrush中脸部的雕刻

    骨骼,是一门基础艺术,几百年来一直为伟大的艺术大师所研究,它曾经,也将一直是创作现实且可信角色的关键,提高骨骼知识更将大大提高雕刻技能. 若有疑问可直接访问:http://www.zbrushcn.c ...

  10. [转载]ExtJs4 笔记(11) Ext.ListView、Ext.view.View 数据视图

    本篇介绍两个用来展示数据的容器控件,分别是Ext.ListView和Ext.view.View.Ext.ListView就是大名鼎鼎的 Ext GridPanel的前身,不过现在的Ext4已经将它整合 ...