10数据库缓存依赖

  1 数据库缓存依赖
  2 1、数据库缓存依赖(在数据库中创建一个缓存依赖项)
  3 -S服务器名称  -E集成身份验证  -ed启动 -d数据库名称  -et指定缓冲依赖的表名 -t表名
  4 在vs2010的命令提示符中运行(切换到aspnet_regsql.exe所在的目录)
  5 aspnet_regsql -S . -E() -ed -d bjhksj -et -t HKSJ_USERS
  6 
  7 aspnet_regiis
  8 
  9 缓存依赖禁用该数据库
 10 aspnet_regsql -S . -E -dd -d bjhksj
 11 
 12 2、依赖于数据库的web.config配置
 13 <system.web>
 14     <caching>
 15       <sqlCacheDependency enabled="true">
 16         <databases>
 17           <add name="HeimaRegulation(数据库的名称)" connectionStringName="connectionString(连接字符串名称,要在appSetting中添加)" pollTime="500(单位毫秒)"/>
 18         </databases>
 19       </sqlCacheDependency>
 20     </caching>
 21     要在配置文件中增加一个上面的连接字符串。并且要指定数据库和登录名密码。
 22     <add name="connectionString" connectionString="server=.;database=11;uid=sa;pwd=123" >
 23 
 24 3、 System.Web.Caching.SqlCacheDependency dep = new System.Web.Caching.SqlCacheDependency("HeimaRegulation", "Branch");
 25                 Cache.Insert("list", list, dep, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration);
 26 
 27 
 28                 
 29                 
 30 缓存使用场景第一个:访问量大,变化比较少   典型场景:京东菜单项变化比较少,访问又特别大 
 31 页面缓存
 32 控件缓存:数据源缓存
 33 自定义缓存:
 34     普通缓存、过期时间缓存、滑动过期时间缓存、依赖文件缓存、依赖数据库缓存。
 35     
 36     使用场景:
 37     
 38     
 39 
 40 
 41 第二:             微软的Session有什么缺陷?微软怎么解决?
 42 //放到一个状态服务里面:一个进程内存里面。
 43 进程外session
 44     StateServer  对象必须可序列化
 45         1.开始 ASP.NET 状态服务:cmd里面命令:services.msc
 46         2.配置webconfig
 47             <sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424">
 48             </sessionState>
 49         3.如果是远程的stateserver配置注册表
 50         命令:cmd → regedit.exe    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection
 51             设置成1
 52             如果是1:那么代表其他机器也可以访问当前的状态服务。如果是0,那么只能我自己访问。
 53     SQLServer
 54         
 55 
 56 
 57 //放到数据里面:
 58 aspnet_regsql.exe -S 127.0.0.1 -U sa -P 123 -ssadd -sstype c -d SessionTest
 59 
 60         1. <sessionState mode="SQLServer" allowCustomSqlDatabase="true" sqlConnectionString="Data Source=.;Initial Catalog=SessionTest;uid=sa;pwd=123"></sessionState>
 61         2.对象必须可序列化
 62 
 63 
 64 
 65 
 66 图片防止盗链
 67 
 68  void Application_BeginRequest(object sender, EventArgs e)
 69     {
 70         if (Request.RawUrl.Contains("images/"))
 71         {
 72             if (Request.UrlReferrer == null || !IsSameDomain(Request.UrlReferrer, Request.Url))
 73             {
 74                 ////
 75                 Response.ContentType = "image/jpeg";
 76                 string path = Request.MapPath("~/daolian.jpg");
 77                 Response.WriteFile(path);
 78                 //结束请求
 79                 Response.End();
 80             }
 81         }
 82     }
 83     //判断两个域名是否相等
 84     bool IsSameDomain(Uri u1,Uri u2)
 85     {
 86         return Uri.Compare(u1, u2, UriComponents.HostAndPort, UriFormat.SafeUnescaped, StringComparison.CurrentCultureIgnoreCase) == 0 ? true : false;
 87     }
 88 
 89 
 90 
 91 
 92 
 93 权限判断
 94  public void Init(HttpApplication context)
 95     {
 96         //获得状态  AcquireRequestState
 97         context.AcquireRequestState += new EventHandler(context_AcquireRequestState);
 98     }
 99 
100     void context_AcquireRequestState(object sender, EventArgs e)
101     {
102         //验证权限
103         HttpApplication app = sender as HttpApplication;
104         if (app != null)
105         {
106             if (!app.Request.RawUrl.ToLower().Contains("login.aspx"))
107             {
108                 if (app.Session["user"] == null)
109                 {
110                     app.Response.Write("<script>alert('没有权限');window.location.href='Login.aspx?returnurl="+app.Request.RawUrl+"'</script>");
111                     app.Response.End();
112                 }
113             }
114         }
115     }
116 
117 
118 
119 
120 
121 
122 details.aspx?id=1
123 
124 /details-01.htm
125 
126 
127 
128 
129 url重写
130 
131 
132 一、原理
133 void Application_BeginRequest(object sender, EventArgs e)
134     {
135      //url重写
136         HttpApplication app = sender as HttpApplication;
137         string url = app.Request.RawUrl;
138         Regex r = new Regex("/(\\d+)/details\\.htm",RegexOptions.IgnoreCase);
139         Match m = r.Match(url);
140         if (m.Success)
141         {
142             string id = m.Groups[1].Value;
143             app.Context.RewritePath("~/PhotoDetails.aspx?id=" + id);
144         }
145     }
146 
147  二、urlRewriter
148 1、在<configSections>节点加入
149  <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
150 2、在</configSections>之后加入
151     
152   <RewriterConfig>
153     <Rules>
154       <RewriterRule>
155         <LookFor>~/(\d{4})/(\d{2})/Default\.aspx</LookFor>
156         <SendTo>~/Default.aspx?ID=$1</SendTo>
157       </RewriterRule>
158     </Rules>
159   </RewriterConfig>
160 3、<httpHandlers>中加入
161 <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
View Code

 

posted on 2016-03-30 15:44  努力的活着_在人间  阅读(223)  评论(0)    收藏  举报

导航