using System;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace ZZZ.WebControls
{
[DefaultProperty("Text"), ToolboxData("<{0}:PageNavigate runat=\"server\" />")]
public class PageNavigate : WebControl, IPostBackEventHandler
{
public PageNavigate() { }
[DefaultValue(1)]
public virtual int CurrentPage
{
get
{
object obj = ViewState["CurrentPage"];
return (obj is int) ? (int)obj : 1;
}
set
{
if(value < MinPage || value > MaxPage)
throw new ArgumentOutOfRangeException();
ViewState["CurrentPage"] = value;
}
}
[DefaultValue(1)]
public virtual int MaxPage
{
get
{
object obj = ViewState["MaxPage"];
return (obj is int) ? (int)o ......
在使用asp.net编写webservice时,默认情况下是不支持session的,但我们可以把WebMethod的EnableSession选项设为true来显式的打开它,请看以下例子:
1 新建网站WebSite
2 新建web服务WebService.asmx,它具有以下两个方法:
C#-Code:
[WebMethod(EnableSession = true)]
public string Login(string name)
{
Context.Session["name"] = name;
return name;
}
[WebMethod(EnableSession = true)]
public string GetName()
{
if (Context.Session["name"] != null)
return Context.Session["name"].ToString();
else
return "";
}
3 添加asp.net页面SessionInWebservice.aspx
ASP.NET-Code:
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
......
有些web应用在可以处理用户访问之前,需要装载很多的数据,或做一些花费很大的初始化处理。今天使用 ASP.NET 的开发人员经常使用应用的Global.asax 文件中的 “Application_Start”事件处理函数来做这些工作(该事件是在第一个请求执行时触发的)。他们要么设计定制脚本,周期性地向应用发假的请求,来“唤醒它(wake it up)”,从而在客户访问之前执行这个代码,或者就让那不幸的第一个访问者等着这个逻辑执行完才处理其请求(这可以给这些用户造成很长的耽搁)。
ASP.NET 4中有一个叫“自动启动(auto-start)”的新特性,可以较好地解决这个场景, 可以在IIS 7.5(随Windows 7和Windows Server 2008 R2发布)上运行 ASP.NET 4时使用。这个自动启动特性提供了一个可控制的方式来启动一个应用工作进程,初始化ASP.NET 应用,然后接受HTTP请求。 ......
< align=middle src=http://player.youku.com/player.php/sid/XMTQ3NTE2NzIw/v.swf width=480 height=400 type=application/x-shockwave-flash allowScriptAccess="sameDomain" quality="high" mce_src="http://player.youku.com/player.php/sid/XMTQ3NTE2NzIw/v.swf"> ......
Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活。
Forms 验证方式对基于用户的验证授权提供了很好的支持,可以通过一个登录页面验证用户的身份,将此用户的身份发回到客户端的Cookie,之后此用户再访问这个web应用就会连同这个身份Cookie一起发送到服务端。服务端上的授权设置就可以根据不同目录对不同用户的访问授权进行控制了。
问题来了,在实际是用中我们往往需要的是基于角色,或者说基于用户组的验证和授权。对一个网站来说,一般的验证授权的模式应该是这样的:根据实际需求把用户分成不同的身份,就是角色,或者说是用户组,验证过程不但要验证这个用户本身的身份,还要验证它是属于哪个角色的。而访问授权是根据角色来设置的,某些角色可以访问哪些资源,不可以访问哪些资源等等。要是基于用户来授权访问将会是个很不实际的做法,用户有很多,还可能随时的增减,不可能在配置文件中随时的为不断增加的新用户去增加访问授权的。
下面大概的看一下Forms的过程。
Forms身份验证基本原理:
一 身份验证
要采用Forms身份验证,先要在应用程序根目录中的Web.config中做相应的设置:
<authentica ......
进去寒假,由于一个浑浑噩噩的学期结束了,不想令自己继续沉溺在那昏天黑地之中,于是去Library借了一本很厚很重的C# ASP.NET的书,附光盘。有趣的,我用历来学习课本知识的放学学习C#和熟悉VS环境,还做了不少读书笔记,哎,真的没那个必要啊,不过看了1-2周之后,对于服务器端控件的确是熟悉不少,对于边边脚脚的一些页面处理机制也有了深入了解。
但是,年后了,用Socket编程完成邮件密码重置却没有完成。。。
年后去XXB,真的是大开眼界的开始, 构思做一个校园地图之类的东西,类似GoogleMap,结果听到了很多陌生的词语。。。SVG、VML...貌似与来画矢量图有关,于是,在这个寒假的后半段,开始对新项目进行需求分析,在学长的指点下,开始尝试用EA来画用例图和活动图。。。结果对于一款英文版的新软件,上手又花了不少时间,也是在这个时候开始接触UML的。。。
总结,这是一个信息爆炸的寒假,听到了不少,也看了不少,也去找了不少资料,也让自己知道了还有很多要去学习,唯一失败的是,一点成果也没有。。。接踵而至的是新学期的开始。。。 ......