关于生成验证码的问题
我查了其它帖,据说是是空间租用者在服务器做了限制,但是到底如何呢?或者真是限制的话,如何去掉这个限制?
问题如下:(声明,服务器上面确实有黑体字体,我也换了其它个字体来试)
private void SetValidateCode()
{
Bitmap newBitmap = new Bitmap(36, 16, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
Graphics g = Graphics.FromImage(newBitmap);
g.FillRectangle(new SolidBrush(Color.White), new Rectangle(0, 0, 36, 16));
Font textFont = new Font("黑体", 10, System.Drawing.FontStyle.Underline);
RectangleF rectangle = new RectangleF(0, 0, 36, 16);
Random rd = new Random();
int valationNo = 1000 + rd.Next(8999);
g.FillRectangle(new SolidBrush(Color.Violet), rectangle);
g.DrawString(valationNo.ToString(), textFont, new SolidBrush(Color.White), rectangle);
newBitmap.Save(Server.MapPath("images") + "\\VaImg.gif", System.Drawing.Imaging.ImageFormat.Gif);
Session["code"] = valationNo;
}无法找到字体“?”。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentException: 无法找到字体“?”。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 堆栈跟踪:
[ArgumentException: 无法找到字体“?”。]
System.Drawing.FontFamily.get_GenericSansSerif() +75
System.Drawing.Font.CreateFontFamilyWithFallback(String familyName) +86
System.Drawing.Font.Initialize(String familyName, Single emSize, FontStyle style, GraphicsUnit unit) +18
System.Drawing.Font..ctor(String familyName, Single emSize) +35
JadePubSys.CheckCode.ValidateCode(Object VNum)
JadePubSys.CheckCode.Page_Load(Object sender, EventArgs e)
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +750
我查了其它帖,据说是是空间租用者在服务器做了限制,但是到底如何呢?或者真是限制的话,如何去掉这个限制?
问题如下:(声明,服务器上面确实有黑体字体,我也换了其它个字体来试)
private void SetValidateCode()
{
Bitmap newBitmap = new Bitmap(36, 16, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
Graphics g = Graphics.FromImage(newBitmap);
g.FillRectangle(new SolidBrush(Color.White), new Rectangle(0, 0, 36, 16));
Font textFont = new Font("黑体", 10, System.Drawing.FontStyle.Underline);
RectangleF rectangle = new RectangleF(0, 0, 36, 16);
Random rd = new Random();
int valationNo = 1000 + rd.Next(8999);
g.FillRectangle(new SolidBrush(Color.Violet), rectangle);
g.DrawString(valationNo.ToString(), textFont, new SolidBrush(Color.White), rectangle);
newBitmap.Save(Server.MapPath("images") + "\\VaImg.gif", System.Drawing.Imaging.ImageFormat.Gif);
Session["code"] = valationNo;
}无法找到字体“?”。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentException: 无法找到字体“?”。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 堆栈跟踪:
[ArgumentException: 无法找到字体“?”。]
System.Drawing.FontFamily.get_GenericSansSerif() +75
System.Drawing.Font.CreateFontFamilyWithFallback(String familyName) +86
System.Drawing.Font.Initialize(String familyName, Single emSize, FontStyle style, GraphicsUnit unit) +18
System.Drawing.Font..ctor(String familyName, Single emSize) +35
JadePubSys.CheckCode.ValidateCode(Object VNum)
JadePubSys.CheckCode.Page_Load(Object sender, EventArgs e)
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +750
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货