1. Trang chủ
  2. » Công Nghệ Thông Tin

Professional ASP.NET 3.5 in C# and Visual Basic Part 66 ppsx

10 240 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 232,95 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Each of these modes is defined here: ❑ System.Web.SessionState.InProcSessionStateStore:Provides you with the capability to store sessions in the same process as the ASP.NET worker proces

Trang 1

This single class for the personalization system inherits from theProfileProviderbase class This is

illustrated in Figure 12-11

Figure 12-11

As with the other providers covered so far,SqlProfileProviderconnects to a Microsoft SQL Server

Express Edition file by default Although this is the default, you can change the connection to work

with either SQL Server 7.0, 2000, 2005, or 2008 For instance, if you are connecting to a SQL Server 2005 database, you define your connection in theweb.configand then associate yourSqlProfileProvider

declaration to this connection string This scenario is presented in Listing 12-12

Listing 12-12: Connecting the SqlProfileProvider to SQL Server 2005

<configuration>

<connectionStrings>

<add name="LocalSql2005Server"

connectionString="Data Source=127.0.0.1;Integrated Security=SSPI" />

</connectionStrings>

<system.web>

<profile>

<providers>

<clear />

<add name="AspNetSql2005ProfileProvider"

connectionStringName="LocalSql2005Server" applicationName="/"

type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral,

PublicKeyToken=b03f5f7f11d50a3a" />

</providers>

Continued

Trang 2

<add name="FirstName" />

<add name="LastName" />

<add name="LastVisited" />

<add name="Age" />

<add name="Member" />

</properties>

</profile>

</system.web>

</configuration>

Remember that to store profile information in your SQL Server database, you have to configure this

database so the proper tables, stored procedures, and other items are created This task was discussed

earlier in the chapter

The SiteMap Provider

Similar to the personalization provider just discussed, ASP.NET 3.5 provides a single provider to work

with sitemaps Sitemaps are what ASP.NET uses to provide you with a centralized way of maintaining

site navigation By default, the definition of a Web application’s navigation is located in a structured

XML file The sitemap provider lets you interact with this XML file, the.sitemapfile, which you create

for your application The provider available for sitemaps isSystem.Web.XmlSiteMapProvider, which

provides you with the capability to use the ASP.NET navigation system to connect to an XML-based file

This single class for the sitemap system inherits from theStaticSiteMapProviderbase class, which is a

partial implementation of theSiteMapProviderbase class This is illustrated in Figure 12-12

This is the first provider introduced so far that does not connect to a SQL Server database by default

Instead, this provider is designed to work with a static XML file This XML file uses a particular schema

and is covered in considerable detail in Chapter 14

The code required to configureXmlSiteMapProvideris presented in Listing 12-13

Listing 12-13: Defining an XmlSiteMapProvider instance in the web.config

<configuration>

<system.web>

<siteMap defaultProvider="MyXmlSiteMapProvider" enabled="true">

<providers>

<add name="MyXmlSiteMapProvider"

description="SiteMap provider that reads in sitemap files."

type="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

siteMapFile="AnotherWeb.sitemap" />

</providers>

</siteMap>

</system.web>

</configuration>

Trang 3

Figure 12-12

TheXmlSiteMapProviderallows only a single root element in the strictly designedweb.sitemap

file The default file name of the XML file it is looking for isweb.sitemap, although you can change this default setting (as you can see in Listing 12-13) by using thesiteMapFileattribute within the provider

declaration in theweb.configfile

SessionState Providers

As mentioned in the beginning of the chapter, an original concept of a provider model existed when the

idea of managing session state in different ways was first introduced with ASP.NET 1.x The available

modes of storing session state for your users includeInProc,StateServer,SQLServer, or evenCustom

Trang 4

Each mode has definite pros and cons associated with it, and you should examine each option thoroughly

when deciding which session state mode to use

You can find more information on these session state modes in Chapter 22.

This provider model is a bit different from the others discussed so far in this chapter The

SessionState-Moduleclass is a handler provided to load one of the available session state modes Each of these modes

is defined here:

❑ System.Web.SessionState.InProcSessionStateStore:Provides you with the capability to

store sessions in the same process as the ASP.NET worker process This is by far the

best-performing method of session state management

❑ System.Web.SessionState.OutOfProcSessionStateStore:Provides you with the capability to

store sessions in a process separate from the ASP.NET worker process This mode is a little more

secure, but a little worse in performance than the InProc mode

❑ System.Web.SessionState.SqlSessionStateStore:Provides you with the capability to store

sessions in SQL Server This is by far the most secure method of storing sessions, but it is the

worst performing mode of the three available methods

These three modes for session state management are illustrated in Figure 12-13

Figure 12-13

Next, this chapter reviews each of the three modes that you can use out of the box in your ASP.NET 3.5

applications

Trang 5

TheInProcSessionStateStoremode is the default mode for ASP.NET 1.x as well as for ASP.NET 2.0

and 3.5 In this mode, the sessions generated are held in the same process as that being used by the

ASP.NET worker process (aspnet_wp.exeorw3wp.exe) This mode is the best performing, but some

problems exist with this mode as well Because the sessions are stored in the same process, whenever

the worker process is recycled, all the sessions are destroyed Worker processes can be recycled for many reasons (such as a change to theweb.configfile, theGlobal.asaxfile, or a setting in IIS that requires the process to be recycled after a set time period)

An example of the configuration in theweb.configfile for working in the InProc mode is presented in

Listing 12-14

Listing 12-14: Defining the InProc mode for session state management in the

web.config

<configuration>

<system.web>

<sessionState mode="InProc">

</sessionState>

</system.web>

</configuration>

As you can see, this mode is rather simple The next method reviewed is the out-of-process mode — also referred to as the StateServer mode

System.Web.SessionState.OutOfProcSessionStateStore

In addition to the InProc mode, the StateServer mode is an out-of-process method of storing session

state This method does not perform as well as one that stores the sessions in the same process as the

ASP.NET worker process This makes sense because the method must jump process boundaries to work with the sessions you are employing Although the performance is poorer than in the InProc mode, the OutOfProcSessionStateStoremethod is more reliable than running the sessions using InProcSession-StateStore If your application’s worker process recycles, the sessions that this application is working

with are still maintained This is a vital capability for those applications that are critically dependent

upon sessions

An example of usingOutOfProcSessionStateStoreis detailed in Listing 12-15

Listing 12-15: Running sessions out of process using OutOfProcSessionStateStore

<configuration>

<system.web>

<sessionState mode="StateServer"

stateConnectionString="tcpip=127.0.0.1:42424">

</sessionState>

</system.web>

</configuration>

Trang 6

When using the StateServer mode, you also must define where the sessions are stored using the

stateConnectionStringattribute In this case, the local server is used, meaning that the sessions are

stored on the same machine, but in an entirely separate process You could have just as easily stored the

sessions on a different server by providing the appropriate IP address as a value for this attribute In

addition to the IP address, note that port 42424 is used This port is required when using the StateServer

mode for sessions Changing the port for the StateServer is detailed in Chapter 22

System.Web.SessionState.SqlSessionStateStore

The final provider for session state management available to you in ASP.NET is the

SqlSessionState-Store This method is definitely the most resilient of the three available modes With that said, however,

it is also the worst performing of the three modes It is important that you set up your database

appro-priately if you use this method of session state storage Again, Chapter 22 shows you how to set up your

database

To configure your application to work withSqlSessionStateStore, you must configure theweb.config

as detailed in Listing 12-16

Listing 12-16: Defining SqlSessionStateStore in the web.config file

<configuration>

<system.web>

<sessionState mode="SQLServer"

allowCustomSqlDatabase="true"

sqlConnectionString="Data Source=127.0.0.1;

database=MyCustomASPStateDatabase;Integrated Security=SSPI">

</sessionState>

</system.web>

</configuration>

Next, you review the providers available for the Web events architecture

Web Event Providers

Among all the available systems provided in ASP.NET 3.5, more providers are available for the health

monitoring system than for any other system The new health monitoring system enables ASP.NET

application administrators to evaluate the health of a running ASP.NET application and to capture events

(errors and other possible triggers) that can then be stored via one of the available providers These events

are referred to as Web events A large list of events can be monitored via the health monitoring system,

and this means that you can start recording items such as authentication failures/successes, all errors

generated, ASP.NET worker process information, request data, response data, and more Recording

items means using one of the providers available to record to a data store of some kind

Health monitoring in ASP.NET 3.5 is covered in Chapter 33.

Trang 7

By default, ASP.NET 3.5 offers seven possible providers for the health monitoring system This is more than for any of the other ASP.NET systems These providers are defined in the following list:

❑ System.Web.Management.EventLogWebEventProvider:Provides you with the capability to use

the ASP.NET health monitoring system to record security operation errors and all other errors

into the Windows event log

❑ System.Web.Management.SimpleMailWebEventProvider:Provides you with the capability to

use the ASP.NET health monitoring system to send error information in an e-mail

❑ System.Web.Management.TemplatedMailWebEventProvider:Similar to the

SimpleMailWeb-EventProvider, theTemplatedMailWebEventProviderclass provides you with the capability

to send error information in a templated e-mail Templates are defined using a standard.aspx

page

❑ System.Web.Management.SqlWebEventProvider:Provides you with the capability to use the

ASP.NET health monitoring system to store error information in SQL Server As with the other

SQL providers for the other systems in ASP.NET, theSqlWebEventProviderstores error

infor-mation in SQL Server Express Edition by default

❑ System.Web.Management.TraceWebEventProvider:Provides you with the capability to use the ASP.NET health monitoring system to send error information to the ASP.NET page tracing sys-tem

❑ System.Web.Management.IisTraceWebEventProvider:Provides you with the capability to use

the ASP.NET health monitoring system to send error information to the IIS tracing system

❑ System.Web.Management.WmiWebEventProvider:Provides you with the capability to connect

the new ASP.NET health monitoring system, the Windows Management Instrumentation (WMI) event provider

These seven providers for the ASP.NET health monitoring system inherit from either the

WebEvent-Providerbase class, or theBufferedWebEventProvider(which, in turn, inherits from

WebEventProvid-er) This is illustrated in Figure 12-14

What is the difference between theWebEventProviderclass and theBufferedWebEventProvider? The

big difference is that theWebEventProviderwrites events as they happen, whereas the

BufferedWeb-EventProviderholds Web events until a collection of them is made The collection is then written to the database or sent in an e-mail in a batch If you use theSqlWebEventProviderclass, you actually want this batch processing to occur rather than having the provider make a connection to the database and write

to it for each Web event that occurs

Next, this chapter looks at each of the seven available providers for the health monitoring system

System.Web.Management.EventLogWebEventProvider

Traditionally, administrators and developers are used to reviewing system and application errors in the built-in Windows event log The items in the event log can be viewed via the Event Viewer This

Trang 8

Figure 12-14

GUI-based tool for viewing events can be found by selecting Administration Tools in the Control Panel

and then selecting Event Viewer

By default, the health monitoring system uses the Windows event log to record the items that are already

specified in the server’s configuration files or items you have specified in theweb.configfile of your

application If you look in theweb.config.commentsfile in the CONFIG folder of the Microsoft NET

Framework install on your server, you see that theEventLogWebEventProvideris detailed in this

loca-tion The code is presented in Listing 12-17

Listing 12-17: The EventLogWebEventProvider declared in the web.config.comments

file

<configuration>

<system.web>

<healthMonitoring heartbeatInterval="0" enabled="true">

<bufferModes>

<! Removed for clarity >

</bufferModes>

<providers>

<clear />

<add name="EventLogProvider"

Trang 9

type="System.Web.Management.EventLogWebEventProvider, System.Web,Version=2.0.0.0,Culture=neutral,

PublicKeyToken=b03f5f7f11d50a3a" />

<! Removed for clarity >

</providers>

<profiles>

<! Removed for clarity >

</profiles>

<rules>

<add name="All Errors Default" eventName="All Errors"

provider="EventLogProvider" profile="Default" minInstances="1"

maxLimit="Infinite" minInterval="00:01:00" custom="" />

<add name="Failure Audits Default" eventName="Failure Audits"

provider="EventLogProvider" profile="Default" minInstances="1"

maxLimit="Infinite" minInterval="00:01:00" custom="" />

</rules>

<eventMappings>

<! Removed for clarity >

</eventMappings>

</healthMonitoring>

</system.web>

</configuration>

As you can see from Listing 12-17, a lot of possible settings can be applied in the health monitoring

system Depending on the rules and event mappings you have defined, these items are logged into the

event log of the server that is hosting the application Looking closely at the<rules>section of the

listing, you can see that specific error types are assigned to be monitored In this section, two types of

errors are trapped in the health monitoring system —All Errors DefaultandFailure Audits Default When one of the errors defined in the<rules>section is triggered and captured by the health monitoring system, it is recorded Where it is recorded depends upon the specified provider The provider attribute used in the<add>element of the<rules>section determines this In both cases in the example in Listing 12-17, you can see that theEventLogProvideris the assigned provider This means that the Windows

error log is used for recording the errors of both types

As you work through the rest of the providers, note that the health monitoring system behaves differently

when working with providers than the other systems that have been introduced in this chapter Using

the new health monitoring system in ASP.NET 3.5, you are able to assign more than one provider at a

time This means that you are able to specify in theweb.configfile that errors are logged not only into

the Windows event log, but also into any other data store using any other provider you designate Even

for the same Web event type, you can assign the Web event to be recorded to the Windows event log and

SQL Server at the same time (for example).

System.Web.Management.SimpleMailWebEventProvider

Sometimes when errors occur in your applications, you as an administrator or a concerned developer

want e-mail notification of the problem In addition to recording events to disk using something such

as theEventLogWebEventProvider, you can also have the error notification e-mailed to you using the

SimpleMailWebEventProvider As it states in the provider name, the e-mail is a simply constructed one Listing 12-18 shows you how you would go about adding e-mail notification in addition to writing the

errors to the Windows event log

Trang 10

Listing 12-18: The SimpleMailWebEventProvider definition

<configuration>

<system.web>

<healthMonitoring heartbeatInterval="0" enabled="true">

<bufferModes>

<add name="Website Error Notification"

maxBufferSize="100"

maxFlushSize="20"

urgentFlushThreshold="1"

regularFlushInterval="Infinite"

urgentFlushInterval="00:01:00"

maxBufferThreads="1" />

</bufferModes>

<providers>

<clear />

<add name="EventLogProvider"

type="System.Web.Management.EventLogWebEventProvider, System.Web,Version=2.0.0.0,Culture=neutral,

PublicKeyToken=b03f5f7f11d50a3a" />

<add name="SimpleMailProvider"

type="System.Web.Management.SimpleMailWebEventProvider, System.Web, Version=2.0.0.0, Culture=neutral,

PublicKeyToken=b03f5f7f11d50a3a"

from="website@company.com"

to="admin@company.com"

cc="adminLevel2@company.com bcc="director@company.com"

bodyHeader="Warning!"

bodyFooter="Please investigate ASAP."

subjectPrefix="Action required."

buffer="true"

bufferMode="Website Error Notification"

maxEventLength="4096"

maxMessagesPerNotification="1" />

</providers>

<profiles>

<! Removed for clarity >

</profiles>

<rules>

<add name="All Errors Default" eventName="All Errors"

provider="EventLogProvider" profile="Default" minInstances="1"

maxLimit="Infinite" minInterval="00:01:00" custom="" />

<add name="Failure Audits Default" eventName="Failure Audits"

provider="EventLogProvider" profile="Default" minInstances="1"

maxLimit="Infinite" minInterval="00:01:00" custom="" />

<add name="All Errors Simple Mail" eventName="All Errors"

provider="SimpleMailProvider" profile="Default" />

<add name="Failure Audits Default" eventName="Failure Audits"

provider="SimpleMailProvider" profile="Default" />

</rules>

<eventMappings>

Ngày đăng: 05/07/2014, 18:20

TỪ KHÓA LIÊN QUAN