C#公共方法.docx
《C#公共方法.docx》由会员分享,可在线阅读,更多相关《C#公共方法.docx(76页珍藏版)》请在冰豆网上搜索。
C#公共方法
usingSystem;
usingSystem.Configuration;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Text;
usingSystem.Text.RegularExpressions;
usingSystem.Drawing;
usingSystem.Drawing.Imaging;
usingSystem.IO;
usingSystem.Security.Cryptography;
/*
一般放在BLL层下的Common.cs文件中:
usingSystem;//string
usingSystem.Configuration;//调用web.config要引用的命名空间
usingSystem.Web;//HttpContext
usingSystem.Web.UI;//ctl.RenderControl(newHtmlTextWriter(tempWriter));
usingSystem.Text;//StringBuilder
usingSystem.Text.RegularExpressions;//Regex
usingSystem.Drawing;//ImageoriginalImage=Image.FromFile(originalImagePath);
usingSystem.IO;//TextWritertempWriter=newStringWriter();
usingSystem.Security.Cryptography;//DESCryptoServiceProviderdes=newDESCryptoServiceProvider();
*/
namespaceSystem
{
#region公用方法
///
///公用方法
publicclassCommon
publicCommon()
//
//TODO:
在此处添加构造函数逻辑
}
#region1、防止SQL注入方法
///防止SQL注入,过滤字符串
publicstaticstringReplaceSqlStr(stringarg)
string[]Lawlesses={"=","netuser","xp_cmdshell","add","execmaster.dbo.xp_cmdshell","netlocalgroupadministrators","select","Asc","count","char","mid","'","\"","insert","deletefrom","droptable","update","truncate","from","%"};
StringBuilderrltsb=newStringBuilder();
StringBuildersb=newStringBuilder();
sb.Append(arg);
rltsb.Append(arg);
for(inti=0;i{while(sb.ToString().IndexOf(Lawlesses[i],System.StringComparison.CurrentCultureIgnoreCase)>=0){rltsb.Remove(0,rltsb.Length);rltsb.Append(sb.ToString().Substring(0,sb.ToString().IndexOf(Lawlesses[i],System.StringComparison.CurrentCultureIgnoreCase))+"*"+sb.ToString().Substring(sb.ToString().IndexOf(Lawlesses[i],System.StringComparison.CurrentCultureIgnoreCase)+Lawlesses[i].Length));sb.Remove(0,sb.Length);sb.Append(rltsb.ToString());}}returnrltsb.ToString();}#endregion#region2、获取客户端真实IP//////取得客户端真实IP。如果有代理则取第一个非内网地址///publicstaticstringIPAddress{get{stringresult=String.Empty;result=HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];if(result!=null&&result!=String.Empty){//可能有代理if(result.IndexOf(".")==-1)//没有“.”肯定是非IPv4格式result=null;else{if(result.IndexOf(",")!=-1){//有“,”,估计多个代理。取第一个不是内网的IP。result=result.Replace("","").Replace("'","");string[]temparyip=result.Split(",;".ToCharArray());for(inti=0;i{if(IsIPAddress(temparyip[i])&&temparyip[i].Substring(0,3)!="10."&&temparyip[i].Substring(0,7)!="192.168"&&temparyip[i].Substring(0,7)!="172.16."){returntemparyip[i];//找到不是内网的地址}}}elseif(IsIPAddress(result))//代理即是IP格式returnresult;elseresult=null;//代理中的内容非IP,取IP}}stringIpAddress=(HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]!=null&&HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]!=String.Empty)?HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]:HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];if(null==result||result==String.Empty)result=HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];if(result==null||result==String.Empty)result=HttpContext.Current.Request.UserHostAddress;returnresult;}}//////判断是否是IP地址格式0.0.0.0//////待判断的IP地址///trueorfalseprivatestaticboolIsIPAddress(stringstr1){if(str1==null||str1==string.Empty||str1.Length<7||str1.Length>15)returnfalse;stringregformat=@"^d{1,3}[.]d{1,3}[.]d{1,3}[.]d{1,3}___FCKpd___0quot;;Regexregex=newRegex(regformat,RegexOptions.IgnoreCase);returnregex.IsMatch(str1);}#endregion#region3、生成缩略图//////生成缩略图//////源图路径(物理路径)///缩略图路径(物理路径)///缩略图宽度///缩略图高度///生成缩略图的方式--"W"://指定宽,高按比例、"H"://指定高,宽按比例、"HW"://指定高宽,缩放于指定的范围内publicstaticvoidMakeThumbnail(stringoriginalImagePath,stringthumbnailPath,intwidth,intheight,stringmode){System.Drawing.ImageoriginalImage=System.Drawing.Image.FromFile(originalImagePath);inttowidth=width;inttoheight=height;intx=0;inty=0;intow=originalImage.Width;intoh=originalImage.Height;switch(mode){case"HW"://指定高宽缩放(可能变形:2006-5-27樊海斌修改:使显示图片不变形。)if(originalImage.Height*1.0/originalImage.Width>1.0){towidth=originalImage.Width*width/originalImage.Height;}else{toheight=originalImage.Height*height/originalImage.Width;}break;case"W"://指定宽,高按比例toheight=originalImage.Height*width/originalImage.Width;break;case"H"://指定高,宽按比例towidth=originalImage.Width*height/originalImage.Height;break;case"Cut"://指定高宽裁减(不变形)if((double)originalImage.Width/(double)originalImage.Height>(double)towidth/(double)toheight){oh=originalImage.Height;ow=originalImage.Height*towidth/toheight;y=0;x=(originalImage.Width-ow)/2;}else{ow=originalImage.Width;oh=originalImage.Width*height/towidth;x=0;y=(originalImage.Height-oh)/2;}break;default:break;}//新建一个bmp图片System.Drawing.Imagebitmap=newSystem.Drawing.Bitmap(towidth,toheight);//新建一个画板Graphicsg=System.Drawing.Graphics.FromImage(bitmap);//设置高质量插值法g.InterpolationMode=System.Drawing.Drawing2D.InterpolationMode.High;//设置高质量,低速度呈现平滑程度g.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.HighQuality;//清空画布并以透明背景色填充g.Clear(Color.Transparent);//=========用于旋转图片======樊海斌=======//MatrixmyMatrix=newMatrix();//PointFpointF00=newPointF(0,0);//myMatrix.Rotate(30.6f);//myMatrix.RotateAt(30.6f,pointF00);//按指定点旋转//g.Transform=myMatrix;//=========================================//在指定位置并且按指定大小绘制原图片的指定部分g.DrawImage(originalImage,newRectangle(0,0,towidth,toheight),newRectangle(x,y,ow,oh),GraphicsUnit.Pixel);try{//以jpg格式保存缩略图bitmap.Save(thumbnailPath,originalImage.RawFormat);}catch(System.Exceptione){throwe;}finally{originalImage.Dispose();bitmap.Dispose();g.Dispose();}}#endregion#region4、返回站点路径,如果是虚拟目录,则包含虚拟目录//////返回结果:如果是站点:"/";如果是虚拟目录:"/虚拟目录名/"///publicstaticstringAppName{get{stringappPath=HttpContext.Current.Request.ApplicationPath;if(appPath.Trim()=="/")return"/";elsereturnappPath+"/";}}#endregion#region5、返回以字节方式截取字符串//////返回以字节方式载取的字符串////////////publicstaticstringGetSubString(stringstr,intlength){stringtemp=str;intj=0;intk=0;for(inti=0;i{if(Regex.IsMatch(temp.Substring(i,1),@"[\u4e00-\u9fa5]+"))j+=2;elsej++;if(j>=length){returntemp.Substring(0,k-1);}k++;}returntemp;}#endregion#region6、简写MD5加密//////返回MD5加密后的密文//////原文字符串///密文长度:16/32,非16则返回32位的密文///publicstaticstringMd5(stringstr,intcode){if(code==16)//16位MD5加密(取32位加密的9~25字符){returnSystem.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower().Substring(8,16);}else//32位加密{returnSystem.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower();}}#endregion#region7、将一个控的内容Render后生成一个字符串//////将一个控的内容Render后生成一个字符串//////用户控件ID///publicstaticstringGetControlRender(System.Web.UI.Controlctl){TextWritertempWriter=newStringWriter();ctl.RenderControl(newHtmlTextWriter(tempWriter));returntempWriter.ToString();}#endregion#region8、初始化文件夹//////初始化文件夹信息:检查文件夹是否存在,如果文件夹不存在,则建立。//////文件夹相对路径///返回文件夹
while(sb.ToString().IndexOf(Lawlesses[i],System.StringComparison.CurrentCultureIgnoreCase)>=0)
rltsb.Remove(0,rltsb.Length);
rltsb.Append(sb.ToString().Substring(0,sb.ToString().IndexOf(Lawlesses[i],System.StringComparison.CurrentCultureIgnoreCase))+"*"+sb.ToString().Substring(sb.ToString().IndexOf(Lawlesses[i],System.StringComparison.CurrentCultureIgnoreCase)+Lawlesses[i].Length));
sb.Remove(0,sb.Length);
sb.Append(rltsb.ToString());
returnrltsb.ToString();
#endregion
#region2、获取客户端真实IP
///取得客户端真实IP。
如果有代理则取第一个非内网地址
publicstaticstringIPAddress
get
stringresult=String.Empty;
result=HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if(result!
=null&&result!
=String.Empty)
//可能有代理
if(result.IndexOf(".")==-1)//没有“.”肯定是非IPv4格式
result=null;
else
if(result.IndexOf(",")!
=-1)
//有“,”,估计多个代理。
取第一个不是内网的IP。
result=result.Replace("","").Replace("'","");
string[]temparyip=result.Split(",;".ToCharArray());
for(inti=0;i{if(IsIPAddress(temparyip[i])&&temparyip[i].Substring(0,3)!="10."&&temparyip[i].Substring(0,7)!="192.168"&&temparyip[i].Substring(0,7)!="172.16."){returntemparyip[i];//找到不是内网的地址}}}elseif(IsIPAddress(result))//代理即是IP格式returnresult;elseresult=null;//代理中的内容非IP,取IP}}stringIpAddress=(HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]!=null&&HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]!=String.Empty)?HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]:HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];if(null==result||result==String.Empty)result=HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];if(result==null||result==String.Empty)result=HttpContext.Current.Request.UserHostAddress;returnresult;}}//////判断是否是IP地址格式0.0.0.0//////待判断的IP地址///trueorfalseprivatestaticboolIsIPAddress(stringstr1){if(str1==null||str1==string.Empty||str1.Length<7||str1.Length>15)returnfalse;stringregformat=@"^d{1,3}[.]d{1,3}[.]d{1,3}[.]d{1,3}___FCKpd___0quot;;Regexregex=newRegex(regformat,RegexOptions.IgnoreCase);returnregex.IsMatch(str1);}#endregion#region3、生成缩略图//////生成缩略图//////源图路径(物理路径)///缩略图路径(物理路径)///缩略图宽度///缩略图高度///生成缩略图的方式--"W"://指定宽,高按比例、"H"://指定高,宽按比例、"HW"://指定高宽,缩放于指定的范围内publicstaticvoidMakeThumbnail(stringoriginalImagePath,stringthumbnailPath,intwidth,intheight,stringmode){System.Drawing.ImageoriginalImage=System.Drawing.Image.FromFile(originalImagePath);inttowidth=width;inttoheight=height;intx=0;inty=0;intow=originalImage.Width;intoh=originalImage.Height;switch(mode){case"HW"://指定高宽缩放(可能变形:2006-5-27樊海斌修改:使显示图片不变形。)if(originalImage.Height*1.0/originalImage.Width>1.0){towidth=originalImage.Width*width/originalImage.Height;}else{toheight=originalImage.Height*height/originalImage.Width;}break;case"W"://指定宽,高按比例toheight=originalImage.Height*width/originalImage.Width;break;case"H"://指定高,宽按比例towidth=originalImage.Width*height/originalImage.Height;break;case"Cut"://指定高宽裁减(不变形)if((double)originalImage.Width/(double)originalImage.Height>(double)towidth/(double)toheight){oh=originalImage.Height;ow=originalImage.Height*towidth/toheight;y=0;x=(originalImage.Width-ow)/2;}else{ow=originalImage.Width;oh=originalImage.Width*height/towidth;x=0;y=(originalImage.Height-oh)/2;}break;default:break;}//新建一个bmp图片System.Drawing.Imagebitmap=newSystem.Drawing.Bitmap(towidth,toheight);//新建一个画板Graphicsg=System.Drawing.Graphics.FromImage(bitmap);//设置高质量插值法g.InterpolationMode=System.Drawing.Drawing2D.InterpolationMode.High;//设置高质量,低速度呈现平滑程度g.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.HighQuality;//清空画布并以透明背景色填充g.Clear(Color.Transparent);//=========用于旋转图片======樊海斌=======//MatrixmyMatrix=newMatrix();//PointFpointF00=newPointF(0,0);//myMatrix.Rotate(30.6f);//myMatrix.RotateAt(30.6f,pointF00);//按指定点旋转//g.Transform=myMatrix;//=========================================//在指定位置并且按指定大小绘制原图片的指定部分g.DrawImage(originalImage,newRectangle(0,0,towidth,toheight),newRectangle(x,y,ow,oh),GraphicsUnit.Pixel);try{//以jpg格式保存缩略图bitmap.Save(thumbnailPath,originalImage.RawFormat);}catch(System.Exceptione){throwe;}finally{originalImage.Dispose();bitmap.Dispose();g.Dispose();}}#endregion#region4、返回站点路径,如果是虚拟目录,则包含虚拟目录//////返回结果:如果是站点:"/";如果是虚拟目录:"/虚拟目录名/"///publicstaticstringAppName{get{stringappPath=HttpContext.Current.Request.ApplicationPath;if(appPath.Trim()=="/")return"/";elsereturnappPath+"/";}}#endregion#region5、返回以字节方式截取字符串//////返回以字节方式载取的字符串////////////publicstaticstringGetSubString(stringstr,intlength){stringtemp=str;intj=0;intk=0;for(inti=0;i{if(Regex.IsMatch(temp.Substring(i,1),@"[\u4e00-\u9fa5]+"))j+=2;elsej++;if(j>=length){returntemp.Substring(0,k-1);}k++;}returntemp;}#endregion#region6、简写MD5加密//////返回MD5加密后的密文//////原文字符串///密文长度:16/32,非16则返回32位的密文///publicstaticstringMd5(stringstr,intcode){if(code==16)//16位MD5加密(取32位加密的9~25字符){returnSystem.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower().Substring(8,16);}else//32位加密{returnSystem.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower();}}#endregion#region7、将一个控的内容Render后生成一个字符串//////将一个控的内容Render后生成一个字符串//////用户控件ID///publicstaticstringGetControlRender(System.Web.UI.Controlctl){TextWritertempWriter=newStringWriter();ctl.RenderControl(newHtmlTextWriter(tempWriter));returntempWriter.ToString();}#endregion#region8、初始化文件夹//////初始化文件夹信息:检查文件夹是否存在,如果文件夹不存在,则建立。//////文件夹相对路径///返回文件夹
if(IsIPAddress(temparyip[i])
&&temparyip[i].Substring(0,3)!
="10."
&&temparyip[i].Substring(0,7)!
="192.168"
="172.16.")
returntemparyip[i];//找到不是内网的地址
elseif(IsIPAddress(result))//代理即是IP格式
returnresult;
result=null;//代理中的内容非IP,取IP
stringIpAddress=(HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]!
=null&&HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]!
=String.Empty)?
HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]:
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
if(null==result||result==String.Empty)
result=HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
if(result==null||result==String.Empty)
result=HttpContext.Current.Request.UserHostAddress;
///判断是否是IP地址格式0.0.0.0
///待判断的IP地址
///trueorfalse
privatestaticboolIsIPAddress(stringstr1)
if(str1==null||str1==string.Empty||str1.Length<7||str1.Length>15)returnfalse;
stringregformat=@"^d{1,3}[.]d{1,3}[.]d{1,3}[.]d{1,3}___FCKpd___0quot;;
Regexregex=newRegex(regformat,RegexOptions.IgnoreCase);
returnregex.IsMatch(str1);
#region3、生成缩略图
///生成缩略图
///源图路径(物理路径)
///缩略图路径(物理路径)
///缩略图宽度
///缩略图高度
///生成缩略图的方式--"W":
//指定宽,高按比例、"H":
//指定高,宽按比例、"HW":
//指定高宽,缩放于指定的范围内
publicstaticvoidMakeThumbnail(stringoriginalImagePath,stringthumbnailPath,intwidth,intheight,stringmode)
System.Drawing.ImageoriginalImage=System.Drawing.Image.FromFile(originalImagePath);
inttowidth=width;
inttoheight=height;
intx=0;
inty=0;
intow=originalImage.Width;
intoh=originalImage.Height;
switch(mode)
case"HW":
//指定高宽缩放(可能变形:
2006-5-27樊海斌修改:
使显示图片不变形。
)
if(originalImage.Height*1.0/originalImage.Width>1.0)
towidth=originalImage.Width*width/originalImage.Height;
toheight=originalImage.Height*height/originalImage.Width;
break;
case"W":
//指定宽,高按比例
toheight=originalImage.Height*width/originalImage.Width;
case"H":
//指定高,宽按比例
towidth=originalImage.Width*height/originalImage.Height;
case"Cut":
//指定高宽裁减(不变形)
if((double)originalImage.Width/(double)originalImage.Height>(double)towidth/(double)toheight)
oh=originalImage.Height;
ow=originalImage.Height*towidth/toheight;
y=0;
x=(originalImage.Width-ow)/2;
ow=originalImage.Width;
oh=originalImage.Width*height/towidth;
x=0;
y=(originalImage.Height-oh)/2;
default:
//新建一个bmp图片
System.Drawing.Imagebitmap=newSystem.Drawing.Bitmap(towidth,toheight);
//新建一个画板
Graphicsg=System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode=System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空画布并以透明背景色填充
g.Clear(Color.Transparent);
//=========用于旋转图片======樊海斌=======
//MatrixmyMatrix=newMatrix();
//PointFpointF00=newPointF(0,0);
//myMatrix.Rotate(30.6f);
//myMatrix.RotateAt(30.6f,pointF00);//按指定点旋转
//g.Transform=myMatrix;
//=========================================
//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage,newRectangle(0,0,towidth,toheight),newRectangle(x,y,ow,oh),GraphicsUnit.Pixel);
try
//以jpg格式保存缩略图
bitmap.Save(thumbnailPath,originalImage.RawFormat);
catch(System.Exceptione)
throwe;
finally
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
#region4、返回站点路径,如果是虚拟目录,则包含虚拟目录
///返回结果:
如果是站点:
"/";如果是虚拟目录:
"/虚拟目录名/"
publicstaticstringAppName
stringappPath=HttpContext.Current.Request.ApplicationPath;
if(appPath.Trim()=="/")
return"/";
returnappPath+"/";
#region5、返回以字节方式截取字符串
///返回以字节方式载取的字符串
publicstaticstringGetSubString(stringstr,intlength)
stringtemp=str;
intj=0;
intk=0;
for(inti=0;i{if(Regex.IsMatch(temp.Substring(i,1),@"[\u4e00-\u9fa5]+"))j+=2;elsej++;if(j>=length){returntemp.Substring(0,k-1);}k++;}returntemp;}#endregion#region6、简写MD5加密//////返回MD5加密后的密文//////原文字符串///密文长度:16/32,非16则返回32位的密文///publicstaticstringMd5(stringstr,intcode){if(code==16)//16位MD5加密(取32位加密的9~25字符){returnSystem.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower().Substring(8,16);}else//32位加密{returnSystem.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower();}}#endregion#region7、将一个控的内容Render后生成一个字符串//////将一个控的内容Render后生成一个字符串//////用户控件ID///publicstaticstringGetControlRender(System.Web.UI.Controlctl){TextWritertempWriter=newStringWriter();ctl.RenderControl(newHtmlTextWriter(tempWriter));returntempWriter.ToString();}#endregion#region8、初始化文件夹//////初始化文件夹信息:检查文件夹是否存在,如果文件夹不存在,则建立。//////文件夹相对路径///返回文件夹
if(Regex.IsMatch(temp.Substring(i,1),@"[\u4e00-\u9fa5]+"))
j+=2;
j++;
if(j>=length)
returntemp.Substring(0,k-1);
k++;
returntemp;
#region6、简写MD5加密
///返回MD5加密后的密文
///原文字符串
///密文长度:
16/32,非16则返回32位的密文
publicstaticstringMd5(stringstr,intcode)
if(code==16)//16位MD5加密(取32位加密的9~25字符)
returnSystem.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower().Substring(8,16);
else//32位加密
returnSystem.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower();
#region7、将一个控的内容Render后生成一个字符串
///将一个控的内容Render后生成一个字符串
///用户控件ID
publicstaticstringGetControlRender(System.Web.UI.Controlctl)
TextWritertempWriter=newStringWriter();
ctl.RenderControl(newHtmlTextWriter(tempWriter));
returntempWriter.ToString();
#region8、初始化文件夹
///初始化文件夹信息:
检查文件夹是否存在,如果文件夹不存在,则建立。
///文件夹相对路径
///返回文件夹
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1