HttpHandler和图库权限控制

来源:互联网 发布:js 输出1 50的质数 编辑:程序博客网 时间:2024/06/05 06:29

1.使用HttpHandler输出图片

context.Response.ContentType = "image/JPEG";           using (System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(300300))           {               using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap))               {                   g.DrawString("IP:" + context.Request.UserHostAddressnew System.Drawing.Font("宋体"16), System.Drawing.Brushes.Red00);                   g.DrawString("操作系统:" + context.Request.Browser.Platformnew System.Drawing.Font("宋体"16), System.Drawing.Brushes.Red050);                   g.DrawString("浏览器:" + context.Request.Browser.Typenew System.Drawing.Font("宋体"16), System.Drawing.Brushes.Red0150);               }               bitmap.Save(context.Response.OutputStreamSystem.Drawing.Imaging.ImageFormat.Jpeg);                          }
2.使用
context.Request.UrlReferrer.Host可以防止图片盗链,但是可以伪造context.Request.UrlReferrer 
3.填入朋友的姓名就可以输出恶搞的图片,XX,事件,就填在图片上

如果HttpHandler输出的是html、txt,jpeg等类型信息,那么浏览器会直接显示,如果想弹出对话框,在报文头里加上Content-Disposition,把该文件当作文件打开

string fileName = HttpUtility.UrlEncode("李根.jpg");context.Response.AddHeader("Content-Disposition",string.Format("attachment;filename=\"{0}\""fileName));
4.如果是动态输出图像,在把图片保存到磁盘上,会造成磁盘浪费,如果是能直接将生成的内容以流的形式输给用户就直接输出

5.登陆时,数据表中设置上次登陆时间和错误次数,和当前登陆时间,两个算分钟差,在5分钟到30分钟就知道

6this


protected void Page_Load(object senderEventArgs e)       {           Response.Write(this.GetType()+"</br>");//当前页面对象类型           Response.Write(this.GetType().Assembly.Location + "</br>");           Response.Write(this.GetType().BaseType + "</br>");           Response.Write(this.GetType().BaseType.Assembly.Location + "</br>");        }

this指的是当前类的一个子类,Page类有Request、Server、Response等属性

Page.AppRelativeVirtualPath //相对于应用程序的虚拟目录 如:~/Default.aspxFindControl("id")根据控件id找控件的实例
Page.ResolveClientUrl(" 将虚拟路径转化为客户端访问的路径");//返回一个相对于当前页面的相对路径           Page.ResolveUrl("")//直接返回页面的从根开始的全路径
 在想操作控件用控件的ClientId来获得,$('#<%=txt1.ClientID%>
Asp:Label控件,渲染会生成span,当使用
AssociatedControlID时渲染生成label.单击label,会使它绑定的控件获取焦点
asp:Literal会直接输出文本,不会渲染
VirtualPathUtility.ToAbsolute提供虚拟路径操作的转换在上传文件时用FileUpload控件,这里上传限制类型,或者限制
使用者个来获取("<%=txtName.ClientID%>");
 
Server.Transfer方法把执行流程从当前的ASPX文件转到同一服务器上的另一个ASPX页面。调用Server.Transfer时,当前的ASPX页面终止执行,执行流程转入另一个ASPX页面,但新的ASPX页面仍使用前一ASPX页面创建的应答流。       如果用Server.Transfer方法实现页面之间的导航,浏览器中的URL不会改变,因为重定向完全在服务器端进行,浏览器根本不知道服务器已经执行了一次页面变换。 Response.Redirect则是客户端第一次请求服务器返回状态代码302及新URL,客户端再次请求新URL,服务器再返回新页面,比Server.Transfer多一次应答。


6.向数据库自增的时候返回最大id,用insert into T_Users(UserName,Password) output inserted.Id values("adimn","222")";用cmd.ExecuteScalar()


7.当html控件添加了runat="server"时,C#可以使用id设置其属性值,如txtName.href="http://www.baiud.com"

txtName.innerText="";

RequireFieldValidate

8.不用frameset来搭建框架,不利于SEO和操作

9.子页想操作母版页的控件使用下列方法

this.Master.FindControl("")
10数据绑定combo

数据源SqlDataSource/AccessDataSource/LinqDataSource/EntityDataSource/CmlDataSource/ObjectDataSource

最常用的ObjectDataSource

主要掌握ListView和Repeater就行


<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"></asp:ObjectDataSource>
<asp:BulletedList

bulletedLIst渲染生成的是<ul><li></li><ul>

绑定数据源的时候,有AppendBindDatasource不会吧后面添加的内容删除

0 0