⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 globalasax.aspx

📁 书籍教程 >> .Net教程 >> asp.net编程精彩百例
💻 ASPX
字号:
<%@ Register TagPrefix="Acme" Namespace="Acme" Assembly="QSTools" %>
<%@ Register TagPrefix="Acme" TagName="SourceRef" Src="/quickstart/aspplus/util/SrcRef.ascx"%>

<!-- #include virtual="/quickstart/aspplus/include/header.inc" -->

<h4>使用 Global.asax 文件</h4>

<div class="indent" style="font-family:Verdana; font-size:8pt;">
    <b> <img align="middle" src="/quickstart/images/bullet.gif">&nbsp;&nbsp;</b>
    <a class="toc2" href="#globalasax">Global.asax 文件</a><br>
    <b> <img align="middle" src="/quickstart/images/bullet.gif">&nbsp;&nbsp;</b>
    <a class="toc2" href="#events">应用程序或会话范围内的事件</a><br>
    <b> <img align="middle" src="/quickstart/images/bullet.gif">&nbsp;&nbsp;</b>
    <a class="toc2" href="#staticobjects">应用程序或会话范围内的对象</a><br>
    <b> <img align="middle" src="/quickstart/images/bullet.gif">&nbsp;&nbsp;</b>
    <a class="toc2" href="#summary">本节小结</a><br>
</div>

<p>
<hr>

<!--BEGIN SECTION--> <a name="globalasasx"><span class="subhead">Global.asax 文件</span>
<p>

除了编写 UI 代码外,开发人员还可以将应用程序级别的逻辑和事件处理代码添加到他们的 Web 应用程序中。此代码不处理 UI 的生成,并且一般不为响应个别页请求而被调用。相反,它负责处理更高级别的应用程序事件,如 <b>Application_Start</b>、<b>Application_End</b>、<b>Session_Start</b>、<b>Session_End</b> 等等。开发人员使用位于特定 Web 应用程序虚拟目录树根处的 <b>Global.asax</b> 文件来创作此逻辑。第一次激活或请求应用程序命名空间内的任何资源或 URL 时,ASP.NET 自动分析该文件并将其编译成动态 .NET 框架类(此类扩展了 <b>HttpApplication</b> 基类)。
<p>

第一次激活或请求应用程序命名空间内的任何资源或 URL 时,ASP.NET 分析 Global.asax 文件并将其动态编译成 .NET 框架类。Global.asax 文件被配置为自动拒绝任何直接 URL 请求,从而使外部用户不能下载或查看内部代码。
<p>



<!--BEGIN SECTION--> <a name="events"><span class="subhead">应用程序或会话范围内的事件</span>
<p>

通过在 Global.asax 文件中创作符合命名模式“Application_EventName(AppropriateEventArgumentSignature)”的方法,开发人员可以为 <b>HttpApplication</b> 基类的事件定义处理程序。例如:

<p><Acme:TabControl runat="server">
<Tab Name="C#">
&lt;script language="C#" runat="server">

void Application_Start(object sender, EventArgs e) {
  // Application startup code goes here
}
&lt;/script>
</Tab>

<Tab Name="VB">
&lt;script language="VB" runat="server">

Sub Application_Start(Sender As Object, E As EventArgs)
  ' Application startup code goes here
End Sub
&lt;/script>
</Tab>

<Tab Name="JScript">
&lt;script language="JScript" runat="server">

function Application_Start(sender:Object, e:EventArgs) : void {
  // Application startup code goes here
}
&lt;/script>
</Tab>

</Acme:TabControl><p>

如果事件处理代码需要导入附加的命名空间,可以在 .aspx 页中使用 <b>@ import</b> 指令,如下所示:
<p>
<div class="code"><pre>
&lt;%@ Import Namespace="System.Text" %>
</pre></div>

<p>
下面的示例阐释“应用程序”、“会话”和“请求”的生存期。
<p>

<Acme:LangSwitch runat="server">
  <CsTemplate>
<Acme:SourceRef
  RunSample="/quickstart/aspplus/samples/apps/application1/CS/application1.aspx"
  ViewSource="/quickstart/aspplus/samples/apps/application1/application1.src"
  Icon="/quickstart/aspplus/images/application1.gif"
  Caption="C# Application1.aspx"
  runat="server" />
  </CsTemplate>
  <VbTemplate>
<Acme:SourceRef
  RunSample="/quickstart/aspplus/samples/apps/application1/VB/application1.aspx"
  ViewSource="/quickstart/aspplus/samples/apps/application1/application1.src"
  Icon="/quickstart/aspplus/images/application1.gif"
  Caption="VB Application1.aspx"
  runat="server" />
  </VbTemplate>
  <JsTemplate>
<Acme:SourceRef
  RunSample="/quickstart/aspplus/samples/apps/application1/JS/application1.aspx"
  ViewSource="/quickstart/aspplus/samples/apps/application1/application1.src"
  Icon="/quickstart/aspplus/images/application1.gif"
  Caption="JScript Application1.aspx"
  runat="server" />
  </JsTemplate>
</Acme:LangSwitch>

<p>
第一次打开页时,引发应用程序和会话的 <b>Start</b> 事件:
<p><Acme:TabControl runat="server">
<Tab Name="C#">
void Application_Start(object sender, EventArgs e) {
  // Application startup code goes here
}

void Session_Start(object sender, EventArgs e) {
  Response.Write("Session is Starting...&lt;br&gt;");
  Session.Timeout = 1;
}
</Tab>

<Tab Name="VB">
Sub Application_Start(Sender As Object, E As EventArgs)
  ' Application startup code goes here
End Sub

Sub Session_Start(Sender As Object, E As EventArgs)
  Response.Write("Session is Starting...&lt;br&gt;")
  Session.Timeout = 1
End Sub
</Tab>

<Tab Name="JScript">
function Application_Start(sender:Object, E:EventArgs) : void {
  // Application startup code goes here
}

function Session_Start(sender:Object, e:EventArgs) : void {
  Response.Write("Session is Starting...&lt;br&gt;");
  Session.Timeout = 1;
}
</Tab>

</Acme:TabControl><p>

对每个请求都引发 <b>BeginRequest</b> 和 <b>EndRequest</b> 事件。刷新页时,只显示来自 <b>BeginRequest</b>、<b>EndRequest</b> 和 <b>Page_Load</b> 方法的消息。注意:通过放弃当前会话(单击“结束此会话”按钮),将创建新的会话并且再次引发 <b>Session_Start</b> 事件。
<p>



<!--BEGIN SECTION--> <a name="staticobjects"><span class="subhead">应用程序或会话范围内的对象</span>
<p>

静态对象、.NET 框架类和 COM 组件都可以使用对象标记在 Global.asax 文件中定义。范围可以是 <b>appinstance</b>、<b>session</b> 或 <b>application</b>。<b>appinstance</b> 范围表示对象特定于 <b>HttpApplication</b> 的一个实例并且不共享。

<div class="code"><pre>
&lt;object id="id" runat="server" class=".NET Framework class Name" scope="appinstance"/&gt;
&lt;object id="id" runat="server" progid="COM ProgID" scope="session"/&gt;
&lt;object id="id" runat="server" classid="COM ClassID" scope="application"/&gt;
</pre></div>

<p>

<h4><a name="summary">本节小结</a></h4>
<ol>
<li>ASP.NET 框架应用程序可以在 Global.asax 文件中定义应用程序或会话范围内的事件处理程序。
<li>ASP.NET 框架应用程序可以在 Global.asax 文件中定义应用程序或会话范围内的对象。
</ol>
<p>


<!-- #include virtual="/quickstart/aspplus/include/footer.inc" -->

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -