asp.net中ashx生成验证码代码放在Linux(centos)主机上访问时无法显示问题

最近有个项目加入了验证码功能,就从自己博客以前的代码中找到直接使用,直接访问验证码页面报错如下:

源代码:asp.net中使用一般处理程序生成验证码


Application Exception
System.ArgumentException
The requested FontFamily could not be found [GDI+ status: FontFamilyNotFound]

Description: HTTP 500.Error processing request.
Details: Non-web exception. Exception origin (name of application or object): System.Drawing.
Exception stack trace:
at System.Drawing.GDIPlus.CheckStatus (Status status) [0x00000] in <filename unknown>:0
at System.Drawing.FontFamily..ctor (GenericFontFamilies genericFamily) [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Drawing.FontFamily:.ctor (System.Drawing.Text.GenericFontFamilies)
at System.Drawing.FontFamily.get_GenericMonospace () [0x00000] in <filename unknown>:0
at EnterpriseShow.UI.Manager.AjaxHandle.ValidCode.ProcessRequest (System.Web.HttpContext context) [0x00000] in <filename unknown>:0
at System.Web.HttpApplication+<Pipeline>c__Iterator1.MoveNext () [0x00000] in <filename unknown>:0
at System.Web.HttpApplication.Tick () [0x00000] in <filename unknown>:0

1、首先从window上copy字体安装到centos中

安装字体方法如下:本段文字来自唧唧的博客

?




在CentOS中安装中文字体

作者:唧唧

1、先从你本机 C:\Windows\Fonts 拷贝或者网络上下载你想要安装的字体文件(*.ttf文件)到 /usr/share/fonts/chinese/TrueType 目录下(如果系统中没有此目录,则自行mkdir创建,亦可重命名为自己喜欢的文件夹名)

2、修改字体文件的权限,使root用户以外的用户也可以使用

# cd /usr/share/fonts/chinese/TrueType

# chmod 755 *.ttf

3、建立字体缓存

# mkfontscale (如果提示 mkfontscale: command not found,需自行安装 # yum install mkfontscale )

# mkfontdir

# fc-cache -fv (如果提示 fc-cache: command not found,则需要安装# yum install fontconfig )

4、重启计算机

# reboot

2、安装完毕后,我们在代码中指定要使用的字体


context.Response.ContentType = "image/gif";
Bitmap basemap = new Bitmap(200, 60);
Graphics garph1 = Graphics.FromImage(basemap);

garph1.FillRectangle(new SolidBrush(Color.White), 0, 0, 200, 60);
Font font = new Font("consola.ttf", 48, FontStyle.Bold, GraphicsUnit.Pixel);

Random r = new Random();
string letters = "ABCDEFGHIJKLMNPQRSTUVWXYZ";
string letter;
StringBuilder s = new StringBuilder();
for (int i = 0; i < 5; i++)
{
letter = letters.Substring(r.Next(0, letters.Length - 1), 1);
s.Append(letter);
garph1.DrawString(letter, font, new SolidBrush(Color.Black), i * 38, r.Next(0, 15));

}

Pen linePen = new Pen(new SolidBrush(Color.Black), 2);
for (int x = 0; x < 6; x++)
{
garph1.DrawLine(linePen, new Point(r.Next(0, 199), r.Next(0, 59)), new Point(r.Next(0, 199), r.Next(0, 59)));
}

basemap.Save(context.Response.OutputStream, ImageFormat.Gif);
context.Session["CheckCode"] = s.ToString();    //存入Session,用于对比验证
context.Response.End();

再次访问清晰可见啊

记录下来备忘。

asp.net中ashx生成验证码代码放在Linux(centos)主机上访问时无法显示问题,布布扣,bubuko.com

时间: 2024-10-02 05:49:18

asp.net中ashx生成验证码代码放在Linux(centos)主机上访问时无法显示问题的相关文章

bobojavascript、asp.net 实现随机生成验证码

一些网站中都有登录页面,登录时输入正确的验证码才可以,废话不多说,今天就用javascript 和异步来实现自动生成图片验证码的功能. 首先我们要插入一个一般处理程序(也就是ashx的文件,这里我给它起名为WaterMark.ashx) 这个文件所包括的引用: using System;        using System.Web;        using System.Drawing;        using System.Drawing.Drawing2D;        using

ASP .NET登录界面用户验证码代码

//ASP .NET用户登录界面经常用到验证码代码如下 private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 Label4.Text=RandomNum(4); } public string RandomNum(int n) // { string strchar = "0,1,2,3,4,5,6,7,8,9" ; string[] VcArray = strchar.Split(

ASP.NET中DataList数字分页代码

ASP.NET中DataList数字分页代码 转 荐 好长时间没发东西了, 之前一段时间一直在做别的东西, 最近java实验室要开搞系统哈哈, 重新学习.net 这个分页困扰了我这个菜鸟好久阿, 搞了好久终于找到这段代码, 还是数字分页, 试了成功了~还不会分页的朋友看到这个就偷笑吧~~ 代码转自http://hi.baidu.com/honfei css样式取自吴旗娃aspnetpager 效果: 共1页       首页 上一页  1 2 3 4 5 6 7 8 9 10 ....下一页 末

php中apache服务器使用及配置④ apache虚拟主机 web访问时序图

虚拟主机的配置 思考问题!http://localhost/news.html http://www.sohu.comhttp://www.taobao.com.cn目前我们是 http://localhost/myblog/需求我希望http://www.shunping.comhttp://www.sohu.com配置虚拟主机的步骤如下:1. 启用 httpd-vhosts.conf在 httpd.conf 文件中# Virtual hosts ,虚拟主机Include conf/extra

ASP.NET空网页生成默认代码注释

当在Visual Studio下生成ASP.NET空网页时,默认生成代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml&quo

asp.net如何实现生成验证码的登录界面

先要新建validate aspx验证页面.然后生成验证码控件imagebutton,再生成picture窗体. 代码如下: using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.Htm

ASP.NET:把ashx写到类库里并在页面上调用的具体方法

在类库中建Http Handler的操作很简单,就是添加一个普通的类,然后把之前ashx里的代码几乎一模一样贴到这个类中.但要注意命名空间和类名,因为之后我们会用 到.样例Handler: namespace EdiBlog.Core.Web.HttpHandlers{    using System;    using System.Web; public class ExampleHandler : IHttpHandler    {        public bool IsReusabl

ASP.NET中C#生成二维码

ASP.NET中用C#语言编写网页,将自己输入的文字生成二维码. 工具/原料 已安装好VS2010或其他版本VS软件的电脑一台 1.新建 1 新建一个项目(New project),如图: 2 选择Visual C#---->ASP.NET Web应用程序,点击确定. 3 右键新建项目(New Item),如图: 4 选择web窗体(Webform),如图: 5 新建文件夹image,后面要用到. END 2.页面基本布局 1 将刚才新建的 Webform1 中,切换到设计视图,添加 textb

ASP.NET中画图形验证码

1 context.Response.ContentType = "image/jpeg"; 2 //生成随机的中文验证码 3 string yzm = "人口手大小多少上中下男女天地会反清复明杨中科小宝双儿命名空间语现在明天来多个的我山东河北南固安北京南昌东海西安是沙河高教园学" 4 + "木禾上下土个八入大天人火文六七儿九无口日中了子门月不开四五目耳头米见白田电也长山出飞马鸟云公车牛羊小少巾牙尺毛又心手水广升足" 5 + "走方半巴