【.NET Core】你真的了解HttpRuntime类吗

【.NET Core】你真的了解HttpRuntime类吗

码农世界 2024-05-17 后端 66 次浏览 0个评论

【.NET Cote】你真的了解HttpRuntime类吗

文章目录

  • 【.NET Cote】你真的了解HttpRuntime类吗
    • 一、HttpRuntime概述
    • 二、HttpRuntime是什么包
    • 三、HttpRuntime属性
    • 四、HttpRuntime方法
    • 五、HttpRuntime.Cache方法
    • 六、HttpRuntime.Cache应用

      一、HttpRuntime概述

      C# HttpRuntime是一个ASP.NET应用程序的核心类之一,它提供了一些有用的方法和属性,可以让ASP.NET应用程序中处理HTTP请求和响应。常见的用法包括:

      1. 获取当前请求的HttpContext对象
      2. 获取应用程序的虚拟地址
      3. 获取应用程序的物理路径
      4. 获取应用程序的配置信息
      5. 获取应用程序的缓存
      6. 启动应用程序的会话状态
      7. 调用Web服务类

      在使用HttpRuntime类之前,需要先确保在ASP.NET应用程序中已经引用了System.Web命名空间。

      二、HttpRuntime是什么包

      C# HttpRuntime是一个包含一组静态方法和属性的类,它提供了一个用于处理HTTP请求的运行时环境。它通常用于ASP.NET Web应用程序中,可以用来获取当前应用程序的状态,处理请求,管理会话等。

      HttpRuntime对象用于处理HTTP请求ASP.NET管道模型的开头。该方法ProcessRequest驱动所有后续ASP.NET Web处理。

      三、HttpRuntime属性

      • AppDomainAppId:获取httpRuntime所在的应用程序域的应用程序标识
      • AppDomainAppPath:获取承载在当前应用程序域中的应用程序的应用程序目录的物理驱动器路径
      • AppDomainAppVirtualPath:获取包含承载在当前应用程序域中的应用程序的目录的虚拟路径
      • AppDomainId:获取HttpRuntime实例所在应用程序域的域标识
      • AspClientScriptPhysicalPath:获取 ASP.NET 客户端脚本文件的文件夹路径
      • AspClientScriptVitualPath:获取 ASP.NET 客户端脚本文件的虚拟路径
      • AspInstallDirectory:获取安装 ASP.NET 可执行文件的目录的物理路径
      • BinDirectory:获取当前应用程序的/bin目录的物理路径
      • Cache:获取当前应用程序的Cache
      • ClrInstallDirectory:获取安装公共语言运行时可执行文件的目录的物理路径
      • CodegeDir:获取 ASP.NET 存储当前应用程序的临时文件(生成的源、编译了的程序集等)的目录的物理路径
      • IsOnUNCShare:获取一个值,该值指示应用程序是否映射到通用命名约定 (UNC) 共享
      • MachineConfigurationDirectory:获取当前应用程序的 Machine.config 文件所在目录的物理路径
      • UsingIntegratedPipeline:获取一个值,该值指示当前应用程序是否在 IIS 7.0 的集成管道模式下运行

        四、HttpRuntime方法

        • Close():关闭HttpRuntime实例
        • Equals(Object):确定指定对象是等于当前对象
        • GetHashCode():作为默认哈希函数
        • GetNamePermissionSet():返回与代码组关联的权限集
        • MemberwiseClone():创建当前Object的浅表副本
        • ProcessRequest(HttpWorkerRequest):驱动所有ASP.NET Web处理执行
        • UnLoadAppDomain():终止当前应用程序。应用程序在下次接收到请求时重新启动

          五、HttpRuntime.Cache方法

          HttpRuntime.Cache相当于就是一个缓存具体实现类,这个类虽然被放在了。但是非Web应用也是可以拿来用的。

          HttpContext.Cache 是对上述缓存类的封装,由于封装到了 HttpContext ,局限于只能在知道 HttpContext 下使用,即只能用于 Web 应用

          Page.Cache或HttpContext.Cache。实际上都是HttpRuntime.Cache的快捷方式,Page.Cache访问了HttpContext.Cache。

          HttpRuntime.UnloadAppDomain()静态方法UnloadAppDomain()可以让我们用代码重新启动网站。通常用于用户通过程序界面修改了一个比较重要的参数。这时需要重启程序。

          六、HttpRuntime.Cache应用

          public class HttpRuntimeCache
          {
              ///
              ///设置缓存时间,配置(从配置文件中读取)
              ///
              private const double Seconds = 30*24*60*60;
              ///
              ///缓存指定对象,设置缓存
              ///
              public static bool Set(string key, object value)
              {
                  return Set(key, value, null, DateTime.Now.AddSeconds(Seconds),Cache.NoSlidingExpiration,CacheItemPriority.Default, null);
              }
              ///
              ///缓存指定对象,设置缓存
              ///
              public static bool Set(string key,object value,string path)
              {
                  try
                  {
                     var cacheDependency = new CacheDependency(path);
                     return Set(key, value, cacheDependency);
                  }
                  catch
                  {
                      return false;
                  }
              }
              ///
              ///缓存指定对象,设置缓存
              ///
              public static bool Set(string key,object value,CacheDependency cacheDependency)
              {
                  return Set(key,value,cacheDependency,Cache.NoAbsoluteExpiration,Cahe.NoSlidingExpiration,CacheItemPriority.Default,null);
              }
              
              ///
              ///缓存指定对象,设置缓存
              ///
              public static bool Set(string key,object value,double seconds,bool isAbsulute)
              {
                  return Set(key,value,null,
                            (isAbsulute ? DateTime.Now.AddSeconds(seconds) :Cache.NoAbsoluteExpiration), 
                            (isAbsulute ? Cache.NoSlidingExpiration : TimeSpan.FromSeconds(seconds)), CacheItemPriority.Default,
                            null);
              }
              ///
              ///获取缓存对象
              ///
              public static object Get(string key)
              {
                  return GetPrivate(key);
              }
              ///
              ///判断缓存中是否含有缓存该键
              ///
              public static bool Exists(string key)
              {
                  return (GetPrivate(key) != null);
              }
              ///
              ///移除缓存对象
              ///
              ///
              ///
              public static bool Remove(string key)
              {
                  if(string.IsNullOrEmpty(key))
                  {
                      return false;
                  }
                  HttpRuntime.Cache.Remove(key);
                  return true;
              }
              ///
              ///移除所有缓存
              ///
              ///
              public static bool RemoveAll()
              {
                  IDictionaryEnumerator iDictionaryEnumerator = HttpRuntime.Cache.GetEnumerator();
                  while (iDictionaryEnumerator.MoveNext())
                  {
                      HttpRuntime.Cache.Remove(Convert.ToString(iDictionaryEnumerator.Key));
                  }
                  return true;
              }
              ///
              ///设置缓存
              ///
              public static bool Set(string key, object value, CacheDependency cacheDependency, DateTime dateTime,TimeSpan timeSpan, CacheItemPriority cacheItemPriority, CacheItemRemovedCallback cacheItemRemovedCallback)
              {
                  if (string.IsNullOrEmpty(key) || value == null)
                  {
                      return false;
                  }
                   HttpRuntime.Cache.Insert(key, value, cacheDependency, dateTime, timeSpan, cacheItemPriority,cacheItemRemovedCallback);
                  return true;
              }
              ///
              ///获取缓存
              ///
              private static object GetPrivate(string key)
              {
                  return string.IsNullOrEmpty(key) ? null : HttpRuntime.Cache.Get(key);
              }
              
              
          }
          

转载请注明来自码农世界,本文标题:《【.NET Core】你真的了解HttpRuntime类吗》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,66人围观)参与讨论

还没有评论,来说两句吧...

Top