一、前言:
牛腩系统新闻发布系统已经接近尾声啦,回头看看自己似乎还没有分享关于牛腩新闻发布系统的博客,今天我就在这里简单介绍一下验证码不显示的解决方案。
二、探索解决方案:
我明明完全按照牛腩老师的步骤做的啊,可是为什么我的验证码一直加载不出来,总是显示下面的样纸,不知小伙伴你有没有遇到这个问题呢?
难道是路径的问题?第一个想法在我的心头略过,因为之前出现的好多问题都是文件的路径不正确。开始用firebug调试显示“载入指定URL失败”。看到这样的提示似乎进一步验证了我的想法,好,那就修改一下文件的路径把。
尝试一:
<span style="font-size:18px;"><span style="font-size:18px;"> <img src="handler/WaterMark.ashx" id="vimg" alt=""onclick="changeCode()" /> </span></span>尝试二、
<span style="font-size:18px;"><span style="font-size:18px;"><img src="../handler/WaterMark.ashx" id="vimg" alt=""onclick="changeCode()" /> </span></span>尝试三、
<span style="font-size:18px;"><span style="font-size:18px;"><img src="~/handler/WaterMark.ashx" id="vimg" alt=""onclick="changeCode()" /> </span></span>
关于路径的相关问题大家可以去查相关资料,再次不再赘述,那么问题来了,三种方式均以失败告终,接下来将何去何从?
三、换一个思路:
我们常说要善于站在巨人的肩膀上,于是就向已经完成牛腩系统的小伙伴请教,可是请教了3个小伙伴都说自己没有遇到这个问题,捣鼓了一会同样以失败告终。
好,既然此路行不通,那么只好换一种思路。于是开始仔细研究源码。 打开WaterMark.ashx文件。
对照自己敲的WaterMark.ashx文件。
咦,最少面的表头(<%@ WebHandler Language="C#" Class="WaterMark" %>)什么时候被我注释掉啦?
突然想起来了,当时有表头的时候,会出现20种错误。而把表头那一块去掉之后,则什么错误也没有。对比这两张图即可发现。
天无绝人之路,正当我为这种奇葩问题百思不得其解的时候,一个小小的细节 被我发现啦。源码中只有一个WaterMark.ashx文件。而自己所敲的系统却有两个文件。一个ASHX文件,一个CS文件。
为什么会这样?估计是版本的问题,于是新建了一个一般应用程序,打开代码如下所示。
接下来找到自己所敲系统一般应用程序的文件夹,打开Handler1.ashx。如下图所示。居然是这样,这个文件里面只有这一行代码。而其他的代码都在Handler1.ashx.cs文件中。
四、答案水落石出:
原来是由于版本的原因,我所使用的版本(VS2012)将表头和代码分别当到了两个文件中 。案件终于有了眉目,于是将此段代码:<%@ WebHandler Language="C#" Class="WaterMark" %>复制到WaterMark.ashx文件下。重新运行,申请的验证码终于出现啦,好兴奋~~~
五、小小感悟:
不知小伙伴们有没有和我一样遇到同样的问题呢?解决方法虽然异常简单,也仅仅是一个小小的错误,但往往就是因为这样 一下小小的错误导致项目运行出错。程序员的工作是一个细活,遇到问题不能心烦意乱,应该不骄不躁,沉住气,甚至应该心中窃喜,因为上帝是如此爱你,又给了你一次成长的机会。。。