old_flsystem/类库/Chat.Framework/Utils/Util.cs

950 lines
33 KiB
C#
Raw Permalink Normal View History

2022-09-20 03:10:29 +00:00
using CsharpHttpHelper;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Caching;
namespace Chat.Framework
{
/// <summary>
/// Generates a 16 byte Unique Identification code of a computer
/// Example: 4876-8DB5-EE85-69D3-FE52-8CF7-395D-2EA9
/// </summary>
class FingerPrint
{
private static string fingerPrint = string.Empty;
public static string Value()
{
if (string.IsNullOrEmpty(fingerPrint))
{
fingerPrint = GetHash("CPU >> " + cpuId() + "|BIOS >> " +
biosId() + "|BASE >> " + baseId()
+ "|DISK >> " + diskId() + "|VIDEO >> " +
videoId() + "|MAC >> " + macId()
);
}
return fingerPrint;
}
private static string GetHash(string s)
{
MD5 sec = new MD5CryptoServiceProvider();
ASCIIEncoding enc = new ASCIIEncoding();
byte[] bt = enc.GetBytes(s);
return GetHexString(sec.ComputeHash(bt));
}
private static string GetHexString(byte[] bt)
{
string s = string.Empty;
for (int i = 0; i < bt.Length; i++)
{
byte b = bt[i];
int n, n1, n2;
n = (int)b;
n1 = n & 15;
n2 = (n >> 4) & 15;
if (n2 > 9)
s += ((char)(n2 - 10 + (int)'A')).ToString();
else
s += n2.ToString();
if (n1 > 9)
s += ((char)(n1 - 10 + (int)'A')).ToString();
else
s += n1.ToString();
if ((i + 1) != bt.Length && (i + 1) % 2 == 0) s += "-";
}
return s;
}
#region Original Device ID Getting Code
//Return a hardware identifier
private static string identifier
(string wmiClass, string wmiProperty, string wmiMustBeTrue)
{
string result = "";
System.Management.ManagementClass mc =
new System.Management.ManagementClass(wmiClass);
System.Management.ManagementObjectCollection moc = mc.GetInstances();
foreach (System.Management.ManagementObject mo in moc)
{
if (mo[wmiMustBeTrue].ToString() == "True")
{
//Only get the first one
if (result == "")
{
try
{
result = mo[wmiProperty].ToString();
break;
}
catch
{
}
}
}
}
return result;
}
//Return a hardware identifier
private static string identifier(string wmiClass, string wmiProperty)
{
string result = "";
System.Management.ManagementClass mc =
new System.Management.ManagementClass(wmiClass);
System.Management.ManagementObjectCollection moc = mc.GetInstances();
foreach (System.Management.ManagementObject mo in moc)
{
//Only get the first one
if (result == "")
{
try
{
result = mo[wmiProperty].ToString();
break;
}
catch
{
}
}
}
return result;
}
private static string cpuId()
{
//Uses first CPU identifier available in order of preference
//Don't get all identifiers, as it is very time consuming
string retVal = identifier("Win32_Processor", "UniqueId");
if (retVal == "") //If no UniqueID, use ProcessorID
{
retVal = identifier("Win32_Processor", "ProcessorId");
if (retVal == "") //If no ProcessorId, use Name
{
retVal = identifier("Win32_Processor", "Name");
if (retVal == "") //If no Name, use Manufacturer
{
retVal = identifier("Win32_Processor", "Manufacturer");
}
//Add clock speed for extra security
retVal += identifier("Win32_Processor", "MaxClockSpeed");
}
}
return retVal;
}
//BIOS Identifier
private static string biosId()
{
return identifier("Win32_BIOS", "Manufacturer")
+ identifier("Win32_BIOS", "SMBIOSBIOSVersion")
+ identifier("Win32_BIOS", "IdentificationCode")
+ identifier("Win32_BIOS", "SerialNumber")
+ identifier("Win32_BIOS", "ReleaseDate")
+ identifier("Win32_BIOS", "Version");
}
//Main physical hard drive ID
private static string diskId()
{
return identifier("Win32_DiskDrive", "Model")
+ identifier("Win32_DiskDrive", "Manufacturer")
+ identifier("Win32_DiskDrive", "Signature")
+ identifier("Win32_DiskDrive", "TotalHeads");
}
//Motherboard ID
private static string baseId()
{
return identifier("Win32_BaseBoard", "Model")
+ identifier("Win32_BaseBoard", "Manufacturer")
+ identifier("Win32_BaseBoard", "Name")
+ identifier("Win32_BaseBoard", "SerialNumber");
}
//Primary video controller ID
private static string videoId()
{
return identifier("Win32_VideoController", "DriverVersion")
+ identifier("Win32_VideoController", "Name");
}
//First enabled network card ID
private static string macId()
{
return identifier("Win32_NetworkAdapterConfiguration",
"MACAddress", "IPEnabled");
}
#endregion
}
/// <summary>
/// 工具类
/// </summary>
internal class Util
{
/// <summary>
/// 设置缓存
/// </summary>
/// <param name="robotname"></param>
/// <param name="username"></param>
/// <param name="text"></param>
/// <returns></returns>
public static bool SetCache(string text, int seconds = 30)
{
try
{
Cache cache = HttpRuntime.Cache;
//查找 md5 的缓存,不存在则返回null
object item = cache[text];
if (item == null)
cache.Insert(text, 1, null, DateTime.Now.AddSeconds(seconds), System.Web.Caching.Cache.NoSlidingExpiration);
return true;
}
catch (Exception ex)
{ }
return false;
}
/// <summary>
/// 缓存是否存在
/// </summary>
/// <param name="robotname"></param>
/// <param name="username"></param>
/// <param name="text"></param>
/// <returns></returns>
public static bool GetCache(string text)
{
try
{
Cache cache = HttpRuntime.Cache;
object item = cache[text];
return item != null ? true : false;
}
catch (Exception)
{ }
return false;
}
/// <summary>
/// [解析]
/// 类型=转账,新好友,新申请,新群友,群消息,私消息,图片,视频,取群成员
/// </summary>
private static List<string> NoAnalysisConfig = null;
public static List<string> GetNoAnalysisConfig()
{
try
{
if (NoAnalysisConfig == null)
{
IniHelper ini = new IniHelper(Util.MapFile("系统配置.ini", "Config"));
var tmp = ini.GetValue("解析", "类型");
if (!string.IsNullOrWhiteSpace(tmp))
NoAnalysisConfig = tmp.Replace("", ",").Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(f => f.Trim()).ToList();
else
NoAnalysisConfig = new List<string>();
}
}
catch (Exception ex)
{ }
return NoAnalysisConfig;
}
/// <summary>
/// 通过FileStream 来打开文件这样就可以实现不锁定Image文件到时可以让多用户同时访问Image文件
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static Bitmap ReadImageFile(string path)
{
//OpenRead
Image result = null;
try
{
using (FileStream fs = File.OpenRead(path))
{
int filelength = 0;
filelength = (int)fs.Length; //获得文件长度
Byte[] image = new Byte[filelength]; //建立一个字节数组
fs.Read(image, 0, filelength); //按字节流读取
result = Image.FromStream(fs);
return new Bitmap(result);
}
}
catch (Exception)
{ }
return null;
}
/// <summary>
/// 将图片控制在宽度为指定的像素
/// </summary>
/// <param name="srcImage"></param>
/// <param name="size"></param>
/// <returns></returns>
public static Bitmap PercentImage(Image srcImage, int size = 200)
{
int newW = srcImage.Width < size ? srcImage.Width : size;
int newH = int.Parse(Math.Round(srcImage.Height * (double)newW / srcImage.Width).ToString());
try
{
Bitmap b = new Bitmap(newW, newH);
Graphics g = Graphics.FromImage(b);
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default;
g.DrawImage(srcImage, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, srcImage.Width, srcImage.Height), GraphicsUnit.Pixel);
g.Dispose();
return b;
}
catch (Exception)
{
return null;
}
}
/// <summary>
/// 将图片按百分比压缩,
/// </summary>
/// <param name="iSource"></param>
/// <param name="outPath"></param>
/// <param name="flag">flag取值1到100越小压缩比越大</param>
/// <returns></returns>
public static bool YaSuo(Image iSource, string outPath, int flag = 80)
{
ImageFormat tFormat = iSource.RawFormat;
EncoderParameters ep = new EncoderParameters();
long[] qy = new long[1];
qy[0] = flag;
EncoderParameter eParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qy);
ep.Param[0] = eParam;
try
{
ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageDecoders();
ImageCodecInfo jpegICIinfo = null;
for (int x = 0; x < arrayICI.Length; x++)
{
if (arrayICI[x].FormatDescription.Equals("JPEG"))
{
jpegICIinfo = arrayICI[x];
break;
}
}
if (jpegICIinfo != null)
iSource.Save(outPath, jpegICIinfo, ep);
else
iSource.Save(outPath, tFormat);
return true;
}
catch
{
return false;
}
iSource.Dispose();
}
public static string GetMD5Hash(byte[] bytedata)
{
try
{
System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] retVal = md5.ComputeHash(bytedata);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < retVal.Length; i++)
{
sb.Append(retVal[i].ToString("x2"));
}
return sb.ToString();
}
catch (Exception ex)
{
throw new Exception("GetMD5Hash() fail,error:" + ex.Message);
}
}
public static string RemoveEmoji(string text)
{
if (string.IsNullOrWhiteSpace(text)) return string.Empty;
if (!string.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["RemoveWechatEmoji"]) && System.Configuration.ConfigurationManager.AppSettings["RemoveWechatEmoji"].ToUpper() == "FALSE")
{
return text;
}
text = Regex.Replace(text, @"\%uD.{3}", "");
text = Regex.Replace(text, "[👃☺️☹️☠️✊✌️☝✋✍️♀️♂️]", "");
foreach (var a in text)
{
byte[] bts = Encoding.UTF32.GetBytes(a.ToString());
if (bts[0].ToString() == "253" && bts[1].ToString() == "255")
{
text = text.Replace(a.ToString(), "");
}
}
return text;
}
/// <summary>
/// 壓縮圖片 /// </summary>
/// <param name="fileStream">圖片流</param>
/// <param name="quality">壓縮質量0-100之間 數值越大質量越高</param>
/// <returns></returns>
public static byte[] CompressionImage(Stream fileStream, long quality)
{
try
{
using (Image img = Image.FromStream(fileStream))
{
using (Bitmap bitmap = new Bitmap(img))
{
ImageCodecInfo CodecInfo = GetEncoder(img.RawFormat);
System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, quality);
myEncoderParameters.Param[0] = myEncoderParameter;
using (MemoryStream ms = new MemoryStream())
{
bitmap.Save(ms, CodecInfo, myEncoderParameters);
myEncoderParameters.Dispose();
myEncoderParameter.Dispose();
return ms.ToArray();
}
}
}
}
catch (Exception)
{ return null; }
}
#region
/// <summary>
/// 获取表示JPEG编解码器的ImageCodecInfo对象。
/// </summary>
/// <param name="mimeType"></param>
/// <returns></returns>
private static ImageCodecInfo GetEncoderInfo(String mimeType)
{
int j;
ImageCodecInfo[] encoders;
encoders = ImageCodecInfo.GetImageEncoders();
for (j = 0; j < encoders.Length; ++j)
{
if (encoders[j].MimeType == mimeType)
return encoders[j];
}
return null;
}
/// <summary>
/// 图片压缩(降低质量以减小文件的大小)
/// </summary>
/// <param name="srcBitmap">传入的Bitmap对象</param>
/// <param name="destStream">压缩后的Stream对象</param>
/// <param name="level">压缩等级0到1000 最差质量100 最佳</param>
public static void Compress(Bitmap srcBitmap, Stream destStream, long level)
{
try
{
ImageCodecInfo myImageCodecInfo;
System.Drawing.Imaging.Encoder myEncoder;
EncoderParameter myEncoderParameter;
EncoderParameters myEncoderParameters;
// 获取表示JPEG编解码器的ImageCodecInfo对象。
myImageCodecInfo = GetEncoderInfo("image/jpeg");
//基于质量参数类别的GUID创建编码器对象。
myEncoder = System.Drawing.Imaging.Encoder.Quality;
// 创建EncoderParameters对象。EncoderParameters对象有一个EncoderParameter.objects数组。在这种情况下只有一个。数组中的EncoderParameter对象。
myEncoderParameters = new EncoderParameters(1);
// 将位图保存为一个JPEG文件给定的质量水平
myEncoderParameter = new EncoderParameter(myEncoder, level);
myEncoderParameters.Param[0] = myEncoderParameter;
srcBitmap.Save(destStream, myImageCodecInfo, myEncoderParameters);
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 图片压缩(降低质量以减小文件的大小)
/// </summary>
/// <param name="srcBitMap">传入的Bitmap对象</param>
/// <param name="destFile">压缩后的图片保存路径</param>
/// <param name="level">压缩等级0到1000 最差质量100 最佳</param>
public static void Compress(Bitmap srcBitMap, string destFile, long level)
{
try
{
Stream s = new FileStream(destFile, FileMode.Create);
Compress(srcBitMap, s, level);
s.Close();
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
private static ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{ return codec; }
}
return null;
}
public static string GenerateRandomCode(int number)
{
StringBuilder sb = new StringBuilder();
Random r = new Random();
for (int i = 0; i < number; i++)
{
sb.Append(r.Next(0, 9));
}
return sb.ToString();
}
public static int ReadInt(byte[] buf, int index)
{
if (buf.Length >= 16)
{
var seqBuf = new byte[4];
Buffer.BlockCopy(buf, index, seqBuf, 0, 4);
return IPAddress.NetworkToHostOrder(BitConverter.ToInt32(seqBuf, 0));
}
return 1;
}
public static Dictionary<string, object> ConvertJsonToDic(string str)
{
try
{
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var json = serializer.Deserialize<Dictionary<string, object>>(str);
return json;
}
catch { }
return null;
}
public static string ObjectToJson(object obj)
{
string result;
try
{
System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
jss.MaxJsonLength = Int32.MaxValue;
result = jss.Serialize(obj);
}
catch (Exception ex)
{
result = ex.Message;
}
return result;
}
public static int TimeStamp()
{
DateTime time = DateTime.Now.ToUniversalTime();
DateTime time2 = new DateTime(0x7b2, 1, 1);
return (int)time.Subtract(time2).TotalSeconds;
}
public static string MapPath(string path = "", bool CreateDirectory = true)
{
if (string.IsNullOrWhiteSpace(path))
{
return System.Windows.Forms.Application.StartupPath.ToString() + "\\";
}
path = Path.Combine(System.Windows.Forms.Application.StartupPath.ToString() + "\\", path);
if (!(!CreateDirectory || Directory.Exists(path)))
{
Directory.CreateDirectory(path);
}
return path;
}
public static string MapFile(string file, string path = "")
{
return Path.Combine(MapPath(path, true), file);
}
public static T ConvertJsonToObj<T>(string str)
{
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var json = serializer.Deserialize<T>(str);
return json;
}
public static string HexToStr(byte[] bytes)
{
//string returnStr = "";
//if (bytes != null)
//{
// for (int i = 0; i < bytes.Length; i++)
// {
// returnStr += bytes[i].ToString("X2");
// }
//}
//return returnStr;
StringBuilder returnStr = new StringBuilder("");
if (bytes != null)
{
for (int i = 0; i < bytes.Length; i++)
{
returnStr.Append(bytes[i].ToString("X2"));
}
}
return returnStr.ToString();
}
public static byte[] StrToHex(string hexString)
{
hexString = hexString.Replace(" ", "");
if ((hexString.Length % 2) != 0)
{
hexString = hexString + " ";
}
byte[] buffer = new byte[hexString.Length / 2];
for (int i = 0; i < buffer.Length; i++)
{
buffer[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 0x10);
}
return buffer;
}
/// <summary>
/// 是否能 Ping 通指定的主机
/// </summary>
/// <param name="ip">ip 地址或主机名或域名</param>
/// <returns>true 通false 不通</returns>
public static bool Ping(string ip)
{
return true;
try
{
System.Net.NetworkInformation.Ping p = new System.Net.NetworkInformation.Ping();
System.Net.NetworkInformation.PingOptions options = new System.Net.NetworkInformation.PingOptions();
options.DontFragment = true;
string data = "Test Data!";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 1000; // Timeout 时间,单位:毫秒
System.Net.NetworkInformation.PingReply reply = p.Send(ip, timeout, buffer, options);
if (reply.Status == System.Net.NetworkInformation.IPStatus.Success)
return true;
else
return false;
}
catch (Exception)
{
return false;
}
}
public void WriteLog(string msg, string src)
{
try
{
using (StreamWriter sw = File.AppendText(src))
{
sw.WriteLine("消息:" + msg);
sw.WriteLine("时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
sw.WriteLine("**************************************************");
sw.WriteLine();
sw.Flush();
sw.Close();
sw.Dispose();
}
}
catch
{
}
}
public static string GetComputerMD5()
{
string info = FingerPrint.Value() + Dns.GetHostName();
return MD5Encrypt(info, Encoding.UTF8);
}
/// <summary>
/// MD5加密
/// </summary>
/// <param name="input">需要加密的字符串</param>
/// <returns></returns>
public static string MD5Encrypt(string input)
{
return MD5Encrypt(input, new UTF8Encoding());
}
public static int GetTimeTotalSeconds()
{
return GetTimeTotalSeconds(DateTime.Now);
}
public static List<T> GetRandomList<T>(List<T> inputList)
{
//Copy to a array
T[] copyArray = new T[inputList.Count];
inputList.CopyTo(copyArray);
//Add range
List<T> copyList = new List<T>();
copyList.AddRange(copyArray);
//Set outputList and random
List<T> outputList = new List<T>();
Random rd = new Random(DateTime.Now.Millisecond);
while (copyList.Count > 0)
{
//Select an index and item
int rdIndex = rd.Next(0, copyList.Count - 1);
T remove = copyList[rdIndex];
//remove it from copyList and add it to output
copyList.Remove(remove);
outputList.Add(remove);
}
return outputList;
}
public static string GetPublicIpAdress()
{
try
{
return "127.0.0.1";
string html = new WebClient().DownloadString("http://ip.chinaz.com");
var reg = Regex.Match(html, "<dd class=\"fz24\">(.*?)</dd>");
if (reg.Success)
{
return reg.Groups[1].Value;
}
}
catch (Exception) { }
return string.Empty;
}
public static int GetTimeTotalSeconds(DateTime datetime)
{
DateTime time = datetime.ToUniversalTime();
DateTime time2 = new DateTime(0x7b2, 1, 1);
return (int)time.Subtract(time2).TotalSeconds;
}
/// <summary>
/// 域名转换为IP地址
/// </summary>
/// <param name="hostname">域名或IP地址</param>
/// <returns>IP地址</returns>
public static string Hostname2ip(string hostname)
{
try
{
IPAddress ip;
if (IPAddress.TryParse(hostname, out ip))
return ip.ToString();
else
return Dns.GetHostEntry(hostname).AddressList[0].ToString();
}
catch (Exception)
{
throw new Exception("IP Address Error");
}
}
/// <summary>
/// MD5加密
/// </summary>
/// <param name="input">需要加密的字符串</param>
/// <param name="encode">字符的编码</param>
/// <returns></returns>
public static string MD5Encrypt(string input, Encoding encode)
{
if (string.IsNullOrEmpty(input))
{
return null;
}
MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
byte[] data = md5Hasher.ComputeHash(encode.GetBytes(input));
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
return sBuilder.ToString();
}
/// <summary>
/// 文件转换成Base64字符串
/// </summary>
/// <param name="fileName">文件绝对路径</param>
/// <returns></returns>
public static String FileToBase64(string fileName)
{
string strRet = "";
try
{
FileStream fs = new FileStream(fileName, FileMode.Open);
byte[] bt = new byte[fs.Length];
fs.Read(bt, 0, bt.Length);
strRet = Convert.ToBase64String(bt);
fs.Close();
}
catch (Exception ex)
{
strRet = null;
}
return strRet;
}
/// <summary>
/// Base64字符串转换成文件
/// </summary>
/// <param name="strInput">base64字符串</param>
/// <param name="fileName">保存文件的绝对路径</param>
/// <returns></returns>
public static bool Base64ToFileAndSave(string strInput, string fileName)
{
bool bTrue = false;
try
{
byte[] buffer = Convert.FromBase64String(strInput);
FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate);
fs.Write(buffer, 0, buffer.Length);
fs.Close();
bTrue = true;
}
catch (Exception ex)
{ }
return bTrue;
}
}
public static class FileTools
{
/// <summary>
/// 图片下载
/// </summary>
/// <param name="url"></param>
/// <param name="path"></param>
public static Image DownloadImage(string url, string path)
{
for (int i = 0; i < 4; i++)
{
if (i < 2)
{
try
{
WebClient mywebclient = new WebClient();
byte[] Bytes = mywebclient.DownloadData(url);
using (MemoryStream ms = new MemoryStream(Bytes))
{
Image outputImg = Image.FromStream(ms);
outputImg.Save(path);
return outputImg;
}
}
catch (Exception ex)
{ }
}
else
{
try
{
var http = new HttpHelper();
var item = http.GetItem(url);
item.ReadWriteTimeout = 10000;
var image = http.GetImage(item);
image.Save(path);
return image;
}
catch (Exception ex)
{ }
}
}
return null;
}
/// <summary>
/// 文件MD5校验
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public static string GetMD5Hash(string pathName)
{
string strResult = "";
string strHashData = "";
byte[] arrbytHashValue;
FileStream oFileStream = null;
MD5CryptoServiceProvider oMD5Hasher = new System.Security.Cryptography.MD5CryptoServiceProvider();
try
{
oFileStream = new FileStream(pathName, System.IO.FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
arrbytHashValue = oMD5Hasher.ComputeHash(oFileStream);//计算指定Stream 对象的哈希值
                oFileStream.Close();
                //由以连字符分隔的十六进制对构成的String其中每一对表示value 中对应的元素例如“F-2C-4A”
                strHashData = BitConverter.ToString(arrbytHashValue);
                //替换-
                strHashData = strHashData.Replace("-", "");
strResult = strHashData;
}
catch (System.Exception ex)
{ }
return strResult;
}
/// <summary>
/// 设置缓存
/// </summary>
/// <param name="robotname"></param>
/// <param name="username"></param>
/// <param name="text"></param>
/// <returns></returns>
public static bool SetCacheObj(string k, object v, int m = 10)
{
try
{
Cache cache = HttpRuntime.Cache;
//查找 md5 的缓存,不存在则返回null
object item = cache[k];
if (item == null)
cache.Insert(k, v, null, DateTime.Now.AddMinutes(m), System.Web.Caching.Cache.NoSlidingExpiration);
return true;
}
catch (Exception ex)
{ }
return false;
}
/// <summary>
/// 缓存是否存在
/// </summary>
/// <param name="robotname"></param>
/// <param name="username"></param>
/// <param name="text"></param>
/// <returns></returns>
public static object GetCacheObj(string k)
{
try
{
Cache cache = HttpRuntime.Cache;
return cache[k];
}
catch (Exception)
{ }
return null;
}
}
}