ZhiYeJianKang_PeiXun/Song.ViewData/Helper/Server.cs
2025-02-20 15:41:53 +08:00

272 lines
7.3 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Text.RegularExpressions;
using System.Management.Instrumentation;
using System.Management;
using System.Runtime.InteropServices;
using System.Web.Configuration;
using System.Configuration;
using Microsoft.Win32;
using System.Web.Hosting;
using System.Net;
namespace Song.ViewData
{
/// <summary>
/// 服务器信息
/// </summary>
public sealed class Server
{
private static readonly Server _instance = new Server();
private Server() { }
public static Server GetServer()
{
return _instance;
}
private string _ip = string.Empty;
/// <summary>
/// 服务器IP
/// </summary>
public string IP
{
get {
if (string.IsNullOrWhiteSpace(_ip))
_ip = WeiSha.Common.Server.IP;
return _ip;
}
}
/// <summary>
/// 是否是本机IP
/// </summary>
public bool IsLocalIP
{
get
{
string ip = this.IP;
if (ip == "127.0.0.1") return true;
if (this.Domain.ToLower().Trim() == "localhost") return true;
return false;
}
}
/// <summary>
/// 是否是内网IP
/// </summary>
public bool IsIntranetIP
{
get
{
if (IsLocalIP) return true;
string ip = this.IP;
if (ip.Substring(0, 3) == "10." || ip.Substring(0, 7) == "192.168" || ip.Substring(0, 7) == "172.16.")
{
return true;
}
return false;
}
}
/// <summary>
/// 服务器访问端口
/// </summary>
public string Port
{
get {
string port = "80";
try
{
if (HttpContext.Current != null)
port = System.Web.HttpContext.Current.Request.Url.Port.ToString();
if (port == "443") port = "80";
return port;
}
catch
{
return port;
}
}
}
/// <summary>
/// 站点的访问域名
/// </summary>
/// <returns></returns>
public string Domain
{
get
{
try
{
if (HttpContext.Current != null)
return System.Web.HttpContext.Current.Request.Url.Host.ToString();
}
catch
{
return "";
}
return "";
}
}
/// <summary>
/// db.config中配置的根域
/// </summary>
public string RootDomain
{
get
{
try
{
return WeiSha.Common.Server.RootDomain;
}
catch
{
return "";
}
return "";
}
}
/// <summary>
/// 站点的访问域名带端口,如:http://www.xx.com/
/// </summary>
/// <returns></returns>
public string DomainPath
{
get
{
string path = string.Empty;
if (HttpContext.Current != null)
{
path = "http://" + Domain + ":" + Port;
}
return path;
}
}
private string _os = string.Empty;
/// <summary>
/// 服务器操作系统
/// </summary>
public string OS
{
get
{
if (string.IsNullOrWhiteSpace(_os))
_os = WeiSha.Common.Server.OS;
return _os;
}
}
/// <summary>
/// IIS版本
/// </summary>
public string IISVersion
{
get
{
//RegistryKey表示 Win注册表中的项级节点.此类是注册表封装
string issversion = string.Empty;
RegistryKey getkey = Registry.LocalMachine.OpenSubKey("software\\microsoft\\inetstp");
if (getkey != null)
issversion = System.Convert.ToInt32(getkey.GetValue("majorversion", -1)).ToString();
return issversion;
}
}
/// <summary>
/// CPU个数
/// </summary>
public int CPUCount
{
get
{
try
{
string count = Environment.GetEnvironmentVariable("NUMBER_OF_PROCESSORS"); //CPU个数
return System.Convert.ToInt16(count);
}
catch
{
return 0;
}
}
}
private string _CpuHz = string.Empty;
/// <summary>
/// CPU主频单位 GHz
/// </summary>
public string CPUHz
{
get
{
if (string.IsNullOrWhiteSpace(_CpuHz))
_CpuHz = WeiSha.Common.Server.CPUHz;
return _CpuHz;
}
}
private double _ramSize = -1;
/// <summary>
/// 物理内存大小
/// </summary>
public double RamSize
{
get
{
if (_ramSize < 0) _ramSize = WeiSha.Common.Server.RamSize;
return _ramSize;
}
}
/// <summary>
/// .Net FramwWork版本号
/// </summary>
public string DotNetVersion
{
get
{
string netver = Environment.Version.ToString(); //DotNET 版本
if (netver.IndexOf('.') < 0) return netver;
netver = netver.Substring(0, 3);
return netver;
}
}
private string _cpu_id = string.Empty;
/// <summary>
/// 获取CPU的序列号由于某些原因可能获取不到
/// </summary>
public string CPU_ID
{
get
{
if (string.IsNullOrWhiteSpace(_cpu_id))
_cpu_id = WeiSha.Common.Server.CPU_ID;
return _cpu_id;
}
}
/// <summary>
/// 当前应用程序的物理路径
/// </summary>
public string ProgramPath
{
get
{
return System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath;
}
}
public DateTime _initDate = DateTime.Now.AddYears(-200);
/// <summary>
/// 系统部署运行的初始时间
/// </summary>
public DateTime InitDate
{
get
{
if (_initDate > DateTime.Now.AddYears(-100)) return _initDate;
_initDate = WeiSha.Common.License.Value.InitDate;
return _initDate;
}
}
}
}