mvc4.0 获取验证码(图片异常

mvc4.0 获取验证码(图片错误

    public class ValidateCodeController : Controller
    {
        //
        // GET: /ValidateCode/

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult GetValidateCode()
        {
            string checkCode = GetRandomCode(4);
            Session["CheckCode"] = checkCode;

            return File(CreateImage(checkCode), @"image/Jpeg");
        }

        private string GetRandomCode(int CodeCount)
        {
           ...... 此处省略
            
            return RandomCode;
        }

        private byte[] CreateImage(string checkCode)
        {
            ......省略

            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            //history back 不重复 
            Response.Cache.SetNoStore();//这一句 
            Response.ClearContent();
            //Response.ContentType = "image/Jpeg";
            //Response.BinaryWrite(ms.ToArray());
            g.Dispose();
            image.Dispose();

            return ms.ToArray();
        }
    }


cshtml文件
<Image ID="ImageCheck"  runat="server" ImageUrl="ValidateCode/GetValidateCode" 
ImageAlign="AbsMiddle" ToolTip="看不清,换一个"></Image>

图片显示 X , 应该怎么调用啊。
------解决思路----------------------
直接在浏览器里面输入
http://yoursite/ValidateCode/GetValidateCode
能看到图么?

是不是有错误,什么错误?
------解决思路----------------------
写了个测试程序。


   public class ValidateCodeController : Controller
    {
        //
        // GET: /ValidateCode/

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult GetValidateCode()
        {
            string checkCode = GetRandomCode(4);
            Session["CheckCode"] = checkCode;

            Response.Cache.SetNoStore();//这一句        
            Response.ClearContent();

            return File(CreateImage(checkCode), @"image/Jpeg");
        }

        private string GetRandomCode(int CodeCount)
        {
            return "111";
        }

        private byte[] CreateImage(string checkCode)
        {
            using (Bitmap bmpOut = new Bitmap(200, 50))
            {
                Graphics g = Graphics.FromImage(bmpOut);
                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
                g.FillRectangle(Brushes.Black, 0, 0, 200, 50);
                g.DrawString(checkCode, new Font("Verdana", 18), new SolidBrush(Color.White), 0, 0);
                using (MemoryStream ms = new MemoryStream())
                {
                    bmpOut.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                    byte[] bmpBytes = ms.GetBuffer();
                    return bmpBytes;    
                }
            }
        }

    }



使用部分,在index.aspx中加入
 <asp:Image ID="Image1"   runat="server" ImageUrl="/ValidateCode/GetValidateCode" />
注意这里加入了 /根节点,因为我的index.aspx在/views/home下,不加 /的话就是相对路径,会去找  /Views/Home/ValidateCode/GetValidateCode 这个路径,是红叉叉。
------解决思路----------------------
在你的浏览器的developer tool里面看看 image控件的img html是不是生成了,路径是什么。
------解决思路----------------------
估计路径不对。
------解决思路----------------------
直接用html <img>也可以。
------解决思路----------------------
<Image ID="ImageCheck"  runat="server" ImageUrl="/ValidateCode/GetValidateCode" 


------解决思路----------------------
引用:
图片是显示出来了, 一片白色,没有字


没有字就是你算法的问题了吧,你可以用我的实验一下,再修改。
------解决思路----------------------
那就是你算法的问题了,用我的代码试一试,再修改。