ASP.NET 2.0 中的 [Web 事件] 功能
其中一個主要提供在 ASP.NET 2.0 中的新服務是在 Web 健康監視系統所提供的事件功能。藉由修改 Web.config 檔案,您可以使用健康監視系統來記錄未處理的例外狀況、 過期的表單、 驗證票證和任何其他您想要登入您的應用程式的資料。此欄將會協助您開始使用 Web 事件] 功能,也提供如何在 ASP.NET 2.0 中使用各種不同的提供者的範例。
記錄是藉由定義將事件與提供者相關聯的規則而達成的。規則定義傳送給提供者的事件型的別。下列的基底事件都可讓您記錄:
摺疊此表格展開此表格
| WebBaseEvent | 所有的事件基底的事件類別。包含需要所有的事件,例如事件程式碼、 事件詳細資料代碼、 日期及時間引發事件的屬性序列號碼、 事件訊息和事件詳細資料。 |
| WebManagementEvent | 如應用程式存留期 (Lifetime)、 要求、 錯誤及稽核事件,[管理] 事件的基底的事件類別。 |
| WebHeartbeatEvent | 在固定的間隔中應用程式擷取有用的執行階段狀態資訊產生的事件。 |
| WebAuditEvent | 用來標記條件 (例如 授權失敗、 解密失敗等 安全性稽核事件的基底類別 |
| WebRequestEvent | 所有的資訊性的要求事件基底類別。 |
| WebBaseErrorEvent | 指出錯誤狀況的所有事件基底類別。 |
可用的提供者的型別可讓您將事件輸出傳送至事件檢視器]、 [SQL Server]、 [Windows 管理檢測 (WMI)] 及 [電子郵件。預先設定的提供者和事件對應減少記錄的事件輸出所需的工時的量。
ASP.NET 2.0 會使用事件記錄檔提供者的-現成根據應用程式定義域啟動和停止,以及記錄任何未處理的例外狀況的事件記錄。這有助於涵蓋一些基本的案例。比方說讓我們假設您的應用程式就會擲回例外狀況,但是使用者不會儲存錯誤,而您不能重現。與預設事件日誌規則,您會無法蒐集若要更好的了解哪一種錯誤,發生例外狀況和堆疊資訊。或如果您的應用程式正失去工作階段狀態,您可以查看在事件日誌,以決定是否回收應用程式定義域,及應用程式定義域首先就停止的原因。
健康監視系統也可延伸。比方說可以定義自訂 Web 事件、 引發應用程式中並再定義規則來將事件資訊傳送到如您的電子郵件提供者。這可讓您輕鬆地將繫結在健康監視提供者您檢測。另一個範例您可以每次訂單處理及設定傳送到 SQL Server 資料庫的每個事件的規則引發事件。您也可以引發事件使用者無法登入多次一列中,設定使用電子郵件為主的提供者的事件時。
預設提供者及事件的組態儲存在全域的 Web.config 檔案中。全域的 Web.config 檔會儲存所有 Web 設定,已儲存在 Machine.config 檔在 ASP.NET 1 x。通用的 Web.config 檔案位於下列目錄:
%windir%\Microsoft.Net\Framework\v2.0.*\config\Web.config
全域的 Web.config 檔的 <healthmonitoring>區段提供預設的組態設定。可以覆寫這些設定,或藉由實作 <healthmonitoring>區段在應用程式的 Web.config 檔中設定您自己的設定值。
全域的 Web.config 檔的 <healthmonitoring>區段包含下列項目:
- 提供者包含提供者設定為 [事件檢視器]、 [WMI,] 和 [SQL Server。
- eventMappings包含各種 WebBase 類別的對應。如果產生事件的類別,您可以擴充此清單。提供產生您自己的事件類別提供您更細分的資料粒度傳送到的資訊提供者。比方說您可以設定要傳送到 SQL Server 時傳送電子郵件傳送您自己自訂的事件未處理的例外狀況。
- 規則連結 eventMappings 給提供者。
- 緩衝處理與 SQL Server 和電子郵件提供者用來決定要多久清除事件提供者。
以下是從通用的 Web.config 檔案的程式碼範例
<healthMonitoring>
<!-- Event Log Provider being added. -->
<providers>
<add name="EventLogProvider" type="System.Web.Management.EventLogWebEventProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
<!-- Event mapping provides a friendly name to the events based on the WebBaseErrorEvent class. -->
<eventMappings>
<add name="All Errors" type="System.Web.Management.WebBaseErrorEvent,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"
startEventCode="0" endEventCode="2147483647" />
</eventMappings>
<!-- Rule tying the "All Errors" event mapping to the EventLog Provider. -->
<rules>
<add name="All Errors Default" eventName="All Errors" provider="EventLogProvider"
profile="Default" minInstances="1" maxLimit="Infinite" minInterval="00:01:00"
custom="" />
</rules>
</healthMonitoring>
提供者範例
這個提供者範例包含下列檔案:
- [ViewEvents.aspx 檔案 – 觸發 MyEvent 自訂 Web 事件,在 Page_Load 及記錄檔事件] 按鈕按一下 事件。有在 Web.config 檔來記錄到 SQL Server 的事件] 清單中會使用資料庫連接的格線檢視。
請務必在 Web.config 檔,以指向 ASPNETDB 資料庫中設定 connectionString。 - [Web.config 檔 – 有所有各種不同的提供者和規則設定,並加上註解。取消註解您要測試的規則,然後瀏覽 Default.aspx 和 ViewEvent.aspx] 網頁,即可看到輸出的樣子。
- [MyEvent.cs 檔案 – 位於 App_Data 資料夾。這用在 ViewEvents.aspx 網頁來引發自訂事件。
- [Default.aspx 檔案 –,則若要查看未處理的例外狀況記錄 System.NullReferenceException 會擲回。
- [EmailTemplateTest.aspx 檔案 – 用於 TemplateemailProvider 範例。程式碼後置檔案 EmailTemplateTest.aspx 檔案有幾行程式碼您可以取消註解,將會造成擲回例外狀況頁。
如何儲存事件到事件檢視器
如我先前所述,記錄事件所使用的提供者在 「 事件檢視器裡,均設定為您通用的 Web.config 檔案。根據預設值,會記錄所有事件根據
WebBaseErrorEvent 和
WebFailureAuditEvent。您可以新增額外的規則,以事件記錄檔記錄額外資訊。比方說若要記錄所有事件 (
亦即,根據
WebBaseEvent 每個事件) 您可以將下列規則加入 Web.config 檔:
<healthMonitoring>
<rules>
<add name="All Events" eventName="All Events" provider="EventLogProvider" profile="Critical" />
</rules>
</healthMonitoring>
此規則會連結
所有事件 的事件對應至事件記錄檔提供者。eventMapping 和提供者都包含在通用的 Web.config 檔案中。就可以使用 [ViewEvents.aspx 頁面觸發 (Trigger) 事件產生藉由瀏覽頁面。網頁也會引發
MyEvent 自訂事件在
Page_Load 以及按鈕 Click 事件。
若要讓產生資料型別瀏覽 Default.aspx 網頁]。這將會擲回一個
System.NullReferenceException 例外狀況,且會在下列的事件記錄在 「 事件檢視器:
事件類型: 警告
事件來源: ASP.NET 2.0.50601.0
事件類別: Web 事件
事件識別碼: 1311年
日期: 8/16/2005
時間: 9:37:44 PM
使用者: N/A
電腦: Computer name
描述:
事件的程式碼: 3005
事件訊息: 發生未處理的例外狀況。
事件時間: 16 2005年 9:37:44 PM
事件的時間 (UTC): 8/17/2005年 2:37:44 AM
事件識別碼: 88838b4e73cf4a0d9a36ac737ff9d1a0
事件順序: 39
事件發生: 1
事件詳細資料代碼: 0
應用程式資訊: 應用程式網域: d047d537 2 127687190240098660
信任層級: 完整
應用程式的虛擬路徑: /WebSite3
應用程式路徑: Physical
path
電腦名稱: Computer
name
處理資訊: 處理序識別碼: 3776
處理程序名稱: WebDev.WebServer.EXE
帳戶名稱: DOMAIN\user
例外狀況資訊: 例外狀況型別: NullReferenceException
例外狀況訊息: 物件參考未設定至物件的執行個體。
所要求的資訊: 要求 URL: http://localhost:1698/WebSite3/Default.aspx
要求的路徑: /WebSite3/Default.aspx
使用者主機位址: 127.0.0.1
使用者: DOMAIN\User
驗證: True
驗證類型: NTLM
執行緒帳戶名稱: DOMAIN\User
執行緒資訊:
執行緒 ID: 8
執行緒帳戶名稱: DOMAIN\User
模擬: False
堆疊追蹤: 在 c:\Documents 和 Settings\user\Desktop\WebEvents\WebSite3\WebSite3\Default.aspx.cs:line 15 中 _Default.Page_Load (物件寄件者、 EventArgs e)
在 System.Web.util.CalliHelper.EventArgFunctionCaller (便會發生 fp、 物件 o、 物件 t、 EventArgs e)
在 System.Web.util.CalliEventHandlerDelegateProxy.callback (物件寄件者、 EventArgs e)
在 System.Web.UI.Control.LoadRecursive() System.Web.UI.Control.OnLoad (EventArgs e)
在 System.Web.UI.page.ProcessRequestMain (布林 includeStagesBeforeAsyncPoint、 布林 includeStagesAfterAsyncPoint)
自訂事件詳細資料: 請有關的詳細資訊參閱 [說明及支援中心在 http://support.microsoft.com。
「 事件日誌中記錄所有事件會產生資訊的事件。下列事件顯示 URL 授權後續頁面要求:
鍵入事件: 資訊
事件來源: ASP.NET 2.0.50601.0
事件類別: Web 事件
事件識別碼: 1314年
日期: 8/16/2005
時間: 11: 04: 44 PM
使用者: N/A
電腦: Computer
name
描述:
事件的程式碼: 4003
事件訊息: URL 授權成功要求。
事件時間: 16 2005年下午 11: 04: 44
事件的時間 (UTC): 8/17/2005年上午 4: 04: 44
事件識別碼: fec3d73fba0247eaba425e5ccfada18e
事件順序: 2
事件發生: 1
事件詳細資料代碼: 0
應用程式的資訊:
應用程式定義域: d047d537 1 127687250829701433
信任層級: 完整
應用程式的虛擬路徑: /WebSite3
應用程式路徑: C:\Documents 和 Settings\user\Desktop\WebEvents\WebSite3\WebSite3\
電腦名稱: Computer name
處理程序資訊:
處理序識別碼: 2292年
處理程序名稱: WebDev.WebServer.EXE
帳戶名稱: DOMAIN\user
所要求的資訊:
要求 URL: http://localhost:2087/WebSite3/Default.aspx
要求的路徑: /WebSite3/Default.aspx
使用者主機位址: 127.0.0.1
使用者: DOMAIN\User
驗證: True
驗證類型: NTLM
執行緒帳戶名稱: DOMAIN\User
自訂事件詳細資料:
如需詳細資訊請 http://support.microsoft.com 在參閱 [說明及支援中心]。
如何儲存至 SQL Server 的事件
這個方法會使用
ASPNETDB 資料庫 Aspnet_regsql.exe 工具所產生的。預設提供者會使用使用 App_data 資料夾中的檔案為基礎資料庫或是本機的 SQL Server SQLExpress 執行個體 LocalSqlServer 連接字串。通用的 Web.config 檔案中設定 [LocalSqlServer 連接字串和 [SqlProvider。
LocalSqlServer 通用的 Web.config 檔案中的連接字串看起來會像這樣:
<connectionStrings>
<add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
</connectionStrings>
如果想使用另一個 SQL Server 伺服器您將需要使用 [Aspnet_regsql.exe] 工具可在 [%windir%\Microsoft.Net\Framework\v2.0.*\Aspnet_regsql.exe] 資料夾中找到。使用 Aspnet_regsql.exe 工具來產生自訂的
ASPNETDB 資料庫,SQL Server] 伺服器上,再將連接字串加入至您的應用程式的.config 檔案,並且使用新的連接字串,以新增提供者。一旦建立
ASPNETDB 資料庫就需要設定連結一個 eventMapping 至 sqlProvider 的規則。
若要進行自訂的資料庫,請依照下列步驟執行:
- 產生一個 ASPNETDB 資料庫。
- 執行 aspnet_regsql.exe –W 並逐一瀏覽精靈。
- 執行命令,自動化程序: Aspnet_regsql – w –S 東 SQL Server
- 新增指向之資料庫的連接字串,讓它看起來像這樣:
<connectionStrings>
<add name="MYASPNETDB" connectionString="Server=<SQL Instance>;Integrated Security=SSPI;Database=aspnetdb"/>
</connectionStrings>
- 新增提供者,以使用 MYASPNETDB 的連接字串,讓它看起來像這樣:
<healthMonitoring>
<providers>
<add name="MySqlWebEventProvider" type="System.Web.Management.SqlWebEventProvider" connectionStringName="MYASPNETDB" maxEventDetailsLength="1073741823" buffer="false"/>
</providers>
</healthMonitoring>
不論您使用預設 SqlProvider 或是設定您自己的提供者時,您必須新增連結提供者與事件對應規則。下列規則到
所有事件 的事件對應連結上面建立新的提供者。此規則會根據
WebBaseEvent 的所有事件都記錄,並傳送給 MySqlWebEventProvider 將使用 MYASPNETDB 連接字串。下列程式碼加入規則來連結事件對應與提供者:
<healthMonitoring>
<rules>
<add name="All Events" eventName="All Events" provider="MySqlWebEventProvider" profile="Critical"/>
</rules>
</healthMonitoring>
如果希望只傳送錯誤至 SQL Server 就可以新增下列規則:
<add name="All Errors" eventName="All Errors" provider="MySqlWebEventProvider" profile="Critical"/>
如何將事件轉寄至 WMI
您也可以將事件轉寄給 WMI。WMI 提供者會為您通用的 Web.config 檔案中依預設設定。
下列程式碼範例會將某規則會將事件轉寄至 WMI:
<providers>
<add name="WmiWebEventProvider" type="System.Web.Management.WmiWebEventProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
您需要新增要關聯之提供者,並也接聽事件的 WMI 接聽應用程式 eventMapping 規則。下列程式碼範例會將某規則會連結到
所有事件 的事件對應的 WMI 提供者:
<rules>
<add name="All Events" eventName="All Events" provider="WmiWebEventProvider" profile="Critical" />
</rules>
範例主控台應用程式 SampleASPNET 使用
ManagementEventWatcher 物件監視的事件,並在主控台視窗中顯示它們。
若要用以 SampleASPNET 請依照下列步驟執行:
- 啟動 SampleASPNET.exe。
- 瀏覽 ViewEvents.aspx 頁面 ; 當您執行時您會看到主控台應用程式中列出的事件。
- 按一下 [記錄檔事件 Button_Click。網頁會回傳,而且您會看到其他的事件也記錄。
附註如果您正在監視遠端電腦上的事件,聆聽的應用程式需要以具有系統管理員存取權的帳戶,在該電腦上執行。
如何轉寄電子郵件的事件
您也可以轉寄到電子郵件的事件。這會讓您直接在 (可能 overflowing) [收件匣] 中取得您的應用程式的相關資訊。請小心有關您對應到您的電子郵件提供者您可以將會不小心傳送自己許多資訊,如哪一個事件規則可能會更適合的 SQL Server 或 「 事件記錄檔。
有兩個電子郵件提供者,SimpleMailWebEventProvider 和 TemplatedMailWebEventProvider。每個具有相同的 [組態] 屬性,與範本 」 和 detailedTemplateErrors 」 屬性,這只是 [TemplatedMailWebEventProvider 上可用的例外。
附註這些電子郵件提供者都不被設定為您。您必須將它們加入至 Web.config 檔案。
這些兩個電子郵件提供者之間的主要差異在於 SimpleMailWebEventProvider 傳送電子郵件不能修改的泛型範本中。The sample Web.config file adds this e-mail provider to the list of configured providers by using the following rule:
<add name="mySimple-mailWebEventProvider" type="System.Web.Management.Simple-mailWebEventProvider"
to="e-mail@foo.com" from="e-mail@foo.com" maxMessagesPerNotification="1" maxEventsPerMessage="10"
buffer="true" bufferMode="Critical Notification"
subjectPrefix="Web Events"/>
下列規則也會加入至繫結到
所有事件 的事件對應的電子郵件提供者:
<add name="All Events" eventName="All Events" provider="mySimple-mailWebEventProvider" profile="Critical"/>
電子郵件警示訊息會類似於下列:
主旨: 事件通知 12,部分 1: Web EventsMicrosoft.Samples.WebEvents.MyEvent /WebSite3 中收到的事件
貴應用程式資訊貴
---------------
應用程式定義域: d047d537 9 127687218865923053 信任層級: 完整應用程式的虛擬路徑: WebSite3 應用程式路徑: C:\Documents 和 Settings\user\Desktop\WebEvents\WebSite3\WebSite3\ 機器名稱: < 電腦名稱 >
貴事件貴
---------------
事件的程式碼: 100010
事件訊息: Button1_Click
事件時間: 16 2005年 10: 12: 52 PM
事件的時間 (UTC): 8/17/2005年上午 3: 12: 52
事件識別碼: 6e5cd252d6114a9e98687598dc6b5d50 事件順序: 12 事件發生: 5 的事件詳細說明程式碼: 0
自訂事件詳細資料:
---------------
以下是電子郵件警示訊息,顯示未處理的例外狀況:
主旨: 事件通知 7,部分 1: Web EventsSystem.Web.Management.WebRequestErrorEvent /WebSite3 中收到的事件
貴應用程式資訊貴
---------------
應用程式定義域: d047d537 5 127687293149504903 信任層級: 完整應用程式的虛擬路徑: WebSite3 應用程式路徑: C:\Documents 和 Settings\user\Desktop\WebEvents\WebSite3\WebSite3\ 機器名稱: < 電腦名稱 >
貴事件貴
---------------
事件的程式碼: 3005
事件訊息: 發生未處理的例外狀況。
事件時間: 8/17/2005年上午 12: 17: 37
事件的時間 (UTC): 8/17/2005年上午 5: 17: 37
事件識別碼: 14b7f24102e140bbbae302d80e5a5f36 事件順序: 7 的事件發生: 1 的事件將詳細說明程式碼: 0
處理程序資訊:
處理序識別碼: 2292年
處理程序名稱: WebDev.WebServer.EXE
帳戶名稱: DOMAIN\User
例外狀況資訊:
例外狀況型別: System.NullReferenceException
例外狀況訊息: 物件參考未設定至物件的執行個體。
所要求的資訊:
要求 URL: http://localhost:2087/WebSite3/Default.aspx
要求的路徑: /WebSite3/Default.aspx
使用者主機位址: 127.0.0.1
使用者: DOMAIN\User
驗證: True
驗證類型: NTLM
執行緒帳戶名稱: DOMAIN\User
執行緒資訊:
執行緒識別碼: 7
執行緒帳戶名稱: DOMAIN\User
模擬: False
堆疊追蹤: 在 c:\Documents 和 Settings\user\Desktop\WebEvents\WebSite3\WebSite3\Default.aspx.cs:line 15 中 _Default.Page_Load (物件寄件者、 EventArgs e)
在 System.Web.util.CalliHelper.EventArgFunctionCaller (便會發生 fp、 物件 o、 物件 t、 EventArgs e)
在 System.Web.util.CalliEventHandlerDelegateProxy.callback (物件寄件者、 EventArgs e)
在 System.Web.UI.Control.LoadRecursive() System.Web.UI.Control.OnLoad (EventArgs e)
在 system.WebUI.page.ProcessRequestMain (布林 includeStagesBeforeAsyncPoint、 布林 includeStagesAfterAsyncPoint)
TemplatedMailWebEventProvider 可讓您為--您已經猜到它--範本指定 ASPX 網頁。ASPX 頁面的輸出用於電子郵件可讓您自訂接收到的資料外觀的主體。
範例應用程式使用下列程式碼,將 TemplatedMailWebEventProvider 加入至 Web.config 檔案,並指定 EmailTemplateTest.aspx 頁面與範本。(EmailTemplateTest.aspx 頁面迴圈在緩衝區中可用的事件的並顯示這些資料表中)。
<add name="myTemplatedMailWebEventProvider" type="System.Web.Management.TemplatedMailWebEventProvider"
to="e-mail@foo.com" from="e-mail@foo.com " buffer="true"
bufferMode="Critical Notification" maxMessagesPerNotification="10" maxEventsPerMessage="10"
template="e-mailTemplateTest.aspx" detailedTemplateErrors="false" />
電子郵件警示訊息會類似於下列:
主旨: 事件通知 3,部分 1: 10 /WebSite3 所接收的事件
出現來源時間程式碼詳細資料的程式碼訊息
4 System.Web.Security.UrlAuthorizationModule 17 2005年 12:40:45 AM 4003 0 URL 授權成功要求。
4 8/17/2005年 12:40:45 AM 4004 0 為要求的檔案授權成功。
7 ASP.ViewEvents_aspx 17 2005年 12:40:45 AM 100010 0 載入 webevent 範例頁面
8 ASP.ViewEvents_aspx 17 2005年 12:40:45 AM 100010 0 Button1_Click
5 SystemWeb.Security.UrlAuthorizationModule 17 2005年 12:40:45 AM 4003 0 URL 授權成功要求。
5 8/17/2005年 12:40:45 AM 4004 0 為要求的檔案授權成功。
9 ASP.ViewEvents_aspx 17 2005年 12:40:45 AM 100010 0 載入 webevent 範例頁面
10 ASP.ViewEvents_aspx 17 2005年 12:40:45 AM 100010 0 Button1_Click
6 System.Web.Security.UrlAuthorizationModule 17 2005年 12:40:46 AM 4003 0 URL 授權成功要求。
6 8/17/2005年 12:40:46 AM 4004 0 為要求的檔案授權成功。
在這兩種情況下如果緩衝區屬性為 false,電子郵件會包含只有一個事件。使用緩衝處理設定為 true 時,您也需要指定一項 bufferMode 指出如何通常清除緩衝區。通用的 Web.config 檔案中有一些預設 bufferModes。
如果 detailedTemplateErrors ="true",然後當您執行範本時,就會發生的任何錯誤將會傳送電子郵件內文中。如果 detailedTemplateErrors ="false"傳送一般錯誤。
詳細的錯誤,所擲回的 EmailTemplateTest.aspx 看起來會像這樣:
伺服器發生錯誤 '/ WebSite3' 應用程式。
用來建立此事件告知的樣板頁面執行期間,發生未處理的例外狀況。已捨棄 1 屬於此訊息的事件。
描述: 目前的 Web 要求的執行過程中發生未處理的例外狀況。請檢閱堆疊追蹤關於該錯誤,以及它發源程式碼中的詳細資訊。
例外狀況詳細資料: System.Web.HttpException: enableSessionState 設為 true 於組態檔案或頁面指示詞中時,只能使用工作階段狀態。請另外確定 System.Web.SessionStateModule 或自訂工作階段狀態模組包含 <configuration>\<system.web>\<httpmodules>一節中的應用程式組態。
來源檔案: c:\Documents 和 Settings\user\Desktop\WebEvents\WebSite3\WebSite3\e-mailTemplateTest.aspx.cs 線條: 17
堆疊追蹤: [HttpException (0x80004005): enableSessionState 設為 true 於組態檔案或頁面指示詞中時,只能使用工作階段狀態。也請確定該 System.Web.SessionStateModule 或是自訂工作階段狀態模組包含於 [<configuration>\<system.web>\<httpmodules>] 區段中的應用程式組態]。
System.Web.UI.page.get_Session() +146
e mailTemplateTest.Page_Load(Object sender, EventArgs e) c:\Documents 和 Settings\user\Desktop\WebEvents\WebSite3\WebSite3\e-mailTemplateTest.aspx.cs:17 中
System.Web.util.CalliHelper.EventArgFunctionCaller(IntPtr fp, object o, object t, EventArgs e) + 13
System.Web.util.CalliEventHandlerDelegateProxy.callback(object sender, EventArgs e) + 45
System.Web.UI.Control.OnLoad (EventArgs e) +80
SystemWeb.UI.Control.LoadRecursive() +49
(布林 includeStagesBeforeAsyncPoint、 布林 includeStagesAfterAsyncPoint) System.Web.UI.page.ProcessRequestMain +3749
[HttpUnhandledException (0x80004005): 型別 'System.Web.HttpUnhandledException' 擲回的例外狀況]
System.Web.UI.page.HandleError (例外狀況 e) +929
(布林 includeStagesBeforeAsyncPoint、 布林 includeStagesAfterAsyncPoint) System.Web.UI.page.ProcessRequestMain +7864
(布林 includeStagesBeforeAsyncPoint、 布林 includeStagesAfterAsyncPoint) System.Web.UI.page.ProcessRequest +229
System.Web.UI.page.ProcessRequest() +12
System.Web.UI.page.ProcessRequest (HttpContext 內容) +80
System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler, TextWriter writer, Boolean preserveForm, VirtualPath path, VirtualPath filePath, String physPath, Exception error, String queryStringOverride) +1012
[HttpException (0x80004005): 執行 /WebSite3/e-mailTemplateTest.aspx 的子要求時發生錯誤]
System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler, TextWriter Writer, Boolean preserveForm, VirtualPath path, VirtualPath filePath, string physPath, exception error, string queryStringOverride) +1525
System.Web.HttpServerUtility.Execute (String 路徑、 TextWriter 寫入器、 布林 preserveForm) +754
System.Web.HttpServerUtility.ExecuteLocalRequestAndCaptureResponse(String path, TextWriter writer, ErrorFormatterGenerator errorFormatterGenerator) +249
如果屬性為 False,且有錯誤,就只會出現看起來會像這樣的一個一般性的錯誤] 訊息:
伺服器中的發生錯誤 '/ WebSite3' 應用程式。
用來建立此事件告知的樣板頁面執行期間,發生未處理的例外狀況。已捨棄 8 屬於此訊息的事件。
描述: 目前的設定防止例外狀況詳細資料包含在這個訊息。新增"detailedTemplateErrors = true"屬性至提供者組態,以啟用例外狀況被報告的詳細資料。
附註緩衝相關] 屬性的每一排清產生通知。如果排清中包含非
maxEventsPerMessage 允許更多的事件通知將被分割成多個電子郵件但它們所有仍視為是相同的通知。比方說一排清會產生 13 事件,但
maxEventsPerMessage 只允許五個。就會出現三個電子郵件: 前兩個電子郵件將每一個包含五個事件,而第三個電子郵件將包含三個事件。
如果都比
maxMessagesPerNotification 允許更多的電子郵件都會被卸除一些事件。比方說如果將 maxMessagesPerNotification 設定為兩個,而且您使用相同的
maxEventsPerMessage 做上述,就會將只收到兩個電子郵件。就是在第三個電子郵件的事件都會被卸除。任何的落差值或截斷的通知會注意其中一個電子郵件中簡單的郵件提供者。 頂端的電子郵件將會顯示下列:
貴警告貴
---------------
因為每個通知所允許的訊息數目上限已經超過 10 個比賽剩餘這個通知期間將會被捨棄。(警告 ID: 101)
由於您控制項的樣板化的提供者的電子郵件格式您必須自行檢查的落差值/截斷並決定是否要包含的電子郵件中。
附註郵件提供者使用 System.Net.Mail,所以您必須設定 System.Net.Mail Web.config 檔案中。