Global.asax有三个指令,分别是@Application,@Import,@Assembly,@Import且不用说了,
谈谈@Application和@Import指令.
翻看帮助的说明,
指令@Application
属性Inherits
要扩展的类的名称。定义供应用程序继承的代码隐藏类。可以是从 HttpApplication 类派生的任何类。
示例
以下代码指示 ASP.NET 应用程序编译器动态编译新的应用程序类,该应用程序类扩展 My401kApp.Object 类。
<%@ Application Inherits="My401kApp.Object" Description="Our 401k app" %>问题1、是My401kApp.Object含义是不是命名空间My401kApp的Object类呢?这样做的好处就是代码可以放在另一个程序集吗?指令@ Assembly
编译器在编译时引用程序集,从而允许早期绑定。一旦完成对请求的页的编译,便会将程序集加载到应用程序域中,允许后期绑定。
示例
以下代码片段使用两个 @ Assembly 指令,第一个链接到 MyAssembly(用户定义的程序集);第二个链接到 MySource.vb(Visual Basic .NET 源文件)。
<%@ Assembly Name="MyAssembly" %>
<%@ Assembly Src="MySource.vb" %>问题2、早期绑定和允许后期绑定是什么含义?什么情况下需要用这种方式?
另外,指令中不指定程序集的路径,编译器怎样找到它们,在BIN目录吗?欢迎大家讨论,100分奉送!不够可以要求另外加贴送分。
谈谈@Application和@Import指令.
翻看帮助的说明,
指令@Application
属性Inherits
要扩展的类的名称。定义供应用程序继承的代码隐藏类。可以是从 HttpApplication 类派生的任何类。
示例
以下代码指示 ASP.NET 应用程序编译器动态编译新的应用程序类,该应用程序类扩展 My401kApp.Object 类。
<%@ Application Inherits="My401kApp.Object" Description="Our 401k app" %>问题1、是My401kApp.Object含义是不是命名空间My401kApp的Object类呢?这样做的好处就是代码可以放在另一个程序集吗?指令@ Assembly
编译器在编译时引用程序集,从而允许早期绑定。一旦完成对请求的页的编译,便会将程序集加载到应用程序域中,允许后期绑定。
示例
以下代码片段使用两个 @ Assembly 指令,第一个链接到 MyAssembly(用户定义的程序集);第二个链接到 MySource.vb(Visual Basic .NET 源文件)。
<%@ Assembly Name="MyAssembly" %>
<%@ Assembly Src="MySource.vb" %>问题2、早期绑定和允许后期绑定是什么含义?什么情况下需要用这种方式?
另外,指令中不指定程序集的路径,编译器怎样找到它们,在BIN目录吗?欢迎大家讨论,100分奉送!不够可以要求另外加贴送分。
解决方案 »
- 把字符串%%UKM0796078%%U 变成 KM0796078,该怎么办
- 如何将项目脱离TFS管理
- 关于高级编程中 异步IAsyncResult interface 问题。是错误吗?
- app.config中的连接字符串
- 判断对方邮件是否真实存在问题
- 为什么在弹出对话框不管点 确定 还是 取消 都要执行下面的代码呢???
- 如何根据当前屏幕坐标位置得到应用程序信息?
- 请各位帮忙!!
- 很急的一个问题,在线等待,如何把.txt文件导入数据库,其内容是表格形式
- 下面是个列子但是不知道为什么老是说myCommand.FillDataSet(ds, "user");语法不对
- 邮件内容获取
- 如何用C#(2.0)来实现多线程操作
----------------------------------------------------------
应该是到BIN和全局的LIB环境中去寻找
2. Application_Error:
当在web应用程序中有未经处理的错误,这个事件就会引发.该事件有着强大的功能,可以捕获整个应用程序中的所有未处理的 异常,这时你可以把这些异常信息存储在一个log文件中,以便跟踪管理,很方便.
3. Application_OnBeginRequest:
asp.net应用程序的每个请求都会引发该事件,它发生在页面,web服务和其他任何http处理程序请求之前.它也不同于application_Start事件,后者只在启动应用程序时引发一次.
4. Application_OnAuthenticateRequest: 该事件发生在asp.net准备对请求执行认证时.该事件很容易为asp.net建立自定义的身份验证系统.
5. Application_OnAuthorizeRequest: 该事件发生在asp.net准备授权一个请求资源的访问权限时.
6. Application_OnResolveRequestCache: asp.net 有一个强大的页面和web服务输出高速缓存的功能,页面可以在执行一次后静态的保存起来,以供以后的请求使用.该事件就是在asp.net准备确定是否从 cache中处理请求时触发的.
7. Application_OnAcquireRequestState: 这个事件是在asp.net准备从进程中及进程外window service 或sql server中获得session状态数据时引发的.
8. application_OnPreRequestHandleExecute: 这个事件是在请求的处理程序调用之前引发的.
9. Application_OnPostRequestHandleExecute: 这个事件是在处理程序完成了对请求的处理之后引发的.这之后Response对象把数据送回客户端.
10. Applicaiton_OnReleaseRequestState: 用来释放session数据并在必要时更新存储器的.
11. Applicaiton_OnUpdateRequestCache: 这个事件是在asp.net用当前请求更新告诉缓存时发生的.
12. Application_OnEndRequest: 这是请求完成所引发的最后一个事件.
13. Application_OnPreSendRequestsHeaders: 在http标题发送到请求的客户端之前发生的.
14.Application_OnPreSendRequestContent: 是在Http主体发送到请求的客户端之前发生的.
15. Applicaton_OnDisposed: 这一事件是在asp.net应用程序最终关闭,而且clr从内存中删除了asp.net应用程序时引发的. 以上这些事件其实并不一定都会用到,但很多事件还是很有用的.
举个例子,像Application_OnBeginRequest事件,它触发在每个用户请求发送时,利用这一事件我们可以轻松的加入一个计数器,用来计算服务器在一段时间内,回应了多少个用户请求.
而application_OnEndRequest 事件则发生在所有请求完毕所有,即将将数据输出给用户,我们可以利用这一事件来加入一些对每个页面都需要加入的东东.比如: this site is powered by asp.net等等之类的信息,这样,无论用户请求该站点下的哪个页面,都将在页面底部显示出this site is powered by asp.net的字样. 另外一个很重要的事件就是application_error事件. 在我们的应用程序中,有时候不可能估计到全部的异常,这样,一旦这样的异常发生,将导致显示黄页,很不友好,而在application_error事件中定义异常则很方便.
<script language="C#" runat=server>
protected void Application_Error(Object sender, EventArgs e)
{
string LogName="Web_Error";
string message="";
message="URL:"+Request.Path+";Error:"+Server.GetLastError().ToString(); //检查日志是否存在
if(!EventLog.SourceExists(LogName))
{
EventLog.CreateEventSource(LogName,LogName);
} //写入日志
EventLog log= new EventLog();
log.Source=LogName;
log.WriteEntry(message,EventLogEntryType.Error);
}
</script>