Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / State / SessionStateContainer.cs / 1 / SessionStateContainer.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* HttpSessionState
*
* Copyright (c) 1998-1999, Microsoft Corporation
*
*/
namespace System.Web.SessionState {
using System.Threading;
using System.Runtime.InteropServices;
using System.Web;
using System.Web.Util;
using System.Collections;
using System.Collections.Specialized;
using System.Text;
using System.Globalization;
using System.Security.Permissions;
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class HttpSessionStateContainer : IHttpSessionState {
String _id;
ISessionStateItemCollection _sessionItems;
HttpStaticObjectsCollection _staticObjects;
int _timeout;
bool _newSession;
HttpCookieMode _cookieMode;
SessionStateMode _mode;
bool _abandon;
bool _isReadonly;
SessionStateModule _stateModule; // used for optimized InProc session id callback
public HttpSessionStateContainer(
String id,
ISessionStateItemCollection sessionItems,
HttpStaticObjectsCollection staticObjects,
int timeout,
bool newSession,
HttpCookieMode cookieMode,
SessionStateMode mode,
bool isReadonly)
: this(null, id, sessionItems, staticObjects, timeout, newSession, cookieMode, mode, isReadonly) {
if (id == null) {
throw new ArgumentNullException("id");
}
}
internal HttpSessionStateContainer(
SessionStateModule stateModule,
string id,
ISessionStateItemCollection sessionItems,
HttpStaticObjectsCollection staticObjects,
int timeout,
bool newSession,
HttpCookieMode cookieMode,
SessionStateMode mode,
bool isReadonly) {
_stateModule = stateModule;
_id = id; // If null, it means we're delaying session id reading
_sessionItems = sessionItems;
_staticObjects = staticObjects;
_timeout = timeout;
_newSession = newSession;
_cookieMode = cookieMode;
_mode = mode;
_isReadonly = isReadonly;
}
internal HttpSessionStateContainer() {
}
/*
* The Id of the session.
*/
public String SessionID {
get {
if (_id == null) {
Debug.Assert(_stateModule != null, "_stateModule != null");
_id = _stateModule.DelayedGetSessionId();
}
return _id;
}
}
/*
* The length of a session before it times out, in minutes.
*/
public int Timeout {
get {return _timeout;}
set {
if (value <= 0) {
throw new ArgumentException(SR.GetString(SR.Timeout_must_be_positive));
}
if (value > SessionStateModule.MAX_CACHE_BASED_TIMEOUT_MINUTES &&
(Mode == SessionStateMode.InProc ||
Mode == SessionStateMode.StateServer)) {
throw new ArgumentException(
SR.GetString(SR.Invalid_cache_based_session_timeout));
}
_timeout = value;
}
}
/*
* Is this a new session?
*/
///
/// [To be supplied.]
///
public bool IsNewSession {
get {return _newSession;}
}
/*
* Is session state in a separate process
*/
///
/// [To be supplied.]
///
public SessionStateMode Mode {
get {return _mode;}
}
/*
* Is session state cookieless?
*/
public bool IsCookieless {
get {
if (_stateModule != null) {
// See
return _stateModule.SessionIDManagerUseCookieless;
}
else {
// For container created by custom session state module,
// sorry, we currently don't have a way to tell and thus we rely blindly
// on cookieMode.
return CookieMode == HttpCookieMode.UseUri;
}
}
}
public HttpCookieMode CookieMode {
get {return _cookieMode;}
}
/*
* Abandon the session.
*
*/
///
/// [To be supplied.]
///
public void Abandon() {
_abandon = true;
}
///
/// [To be supplied.]
///
public int LCID {
//
get { return Thread.CurrentThread.CurrentCulture.LCID; }
set { Thread.CurrentThread.CurrentCulture = HttpServerUtility.CreateReadOnlyCultureInfo(value); }
}
///
/// [To be supplied.]
///
public int CodePage {
//
get {
if (HttpContext.Current != null)
return HttpContext.Current.Response.ContentEncoding.CodePage;
else
return Encoding.Default.CodePage;
}
set {
if (HttpContext.Current != null)
HttpContext.Current.Response.ContentEncoding = Encoding.GetEncoding(value);
}
}
public bool IsAbandoned {
get {return _abandon;}
}
public HttpStaticObjectsCollection StaticObjects {
get { return _staticObjects;}
}
public Object this[String name]
{
get {
return _sessionItems[name];
}
set {
_sessionItems[name] = value;
}
}
///
/// [To be supplied.]
///
public Object this[int index]
{
get {return _sessionItems[index];}
set {_sessionItems[index] = value;}
}
///
/// [To be supplied.]
///
public void Add(String name, Object value) {
_sessionItems[name] = value;
}
///
/// [To be supplied.]
///
public void Remove(String name) {
_sessionItems.Remove(name);
}
///
/// [To be supplied.]
///
public void RemoveAt(int index) {
_sessionItems.RemoveAt(index);
}
///
/// [To be supplied.]
///
public void Clear() {
_sessionItems.Clear();
}
///
/// [To be supplied.]
///
public void RemoveAll() {
Clear();
}
///
/// [To be supplied.]
///
public int Count {
get {return _sessionItems.Count;}
}
///
/// [To be supplied.]
///
public NameObjectCollectionBase.KeysCollection Keys {
get {return _sessionItems.Keys;}
}
///
/// [To be supplied.]
///
public IEnumerator GetEnumerator() {
return _sessionItems.GetEnumerator();
}
///
/// [To be supplied.]
///
public void CopyTo(Array array, int index) {
for (IEnumerator e = this.GetEnumerator(); e.MoveNext();)
array.SetValue(e.Current, index++);
}
///
/// [To be supplied.]
///
public Object SyncRoot {
get { return this;}
}
///
/// [To be supplied.]
///
public bool IsReadOnly {
get { return _isReadonly;}
}
///
/// [To be supplied.]
///
public bool IsSynchronized {
get { return false;}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* HttpSessionState
*
* Copyright (c) 1998-1999, Microsoft Corporation
*
*/
namespace System.Web.SessionState {
using System.Threading;
using System.Runtime.InteropServices;
using System.Web;
using System.Web.Util;
using System.Collections;
using System.Collections.Specialized;
using System.Text;
using System.Globalization;
using System.Security.Permissions;
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class HttpSessionStateContainer : IHttpSessionState {
String _id;
ISessionStateItemCollection _sessionItems;
HttpStaticObjectsCollection _staticObjects;
int _timeout;
bool _newSession;
HttpCookieMode _cookieMode;
SessionStateMode _mode;
bool _abandon;
bool _isReadonly;
SessionStateModule _stateModule; // used for optimized InProc session id callback
public HttpSessionStateContainer(
String id,
ISessionStateItemCollection sessionItems,
HttpStaticObjectsCollection staticObjects,
int timeout,
bool newSession,
HttpCookieMode cookieMode,
SessionStateMode mode,
bool isReadonly)
: this(null, id, sessionItems, staticObjects, timeout, newSession, cookieMode, mode, isReadonly) {
if (id == null) {
throw new ArgumentNullException("id");
}
}
internal HttpSessionStateContainer(
SessionStateModule stateModule,
string id,
ISessionStateItemCollection sessionItems,
HttpStaticObjectsCollection staticObjects,
int timeout,
bool newSession,
HttpCookieMode cookieMode,
SessionStateMode mode,
bool isReadonly) {
_stateModule = stateModule;
_id = id; // If null, it means we're delaying session id reading
_sessionItems = sessionItems;
_staticObjects = staticObjects;
_timeout = timeout;
_newSession = newSession;
_cookieMode = cookieMode;
_mode = mode;
_isReadonly = isReadonly;
}
internal HttpSessionStateContainer() {
}
/*
* The Id of the session.
*/
public String SessionID {
get {
if (_id == null) {
Debug.Assert(_stateModule != null, "_stateModule != null");
_id = _stateModule.DelayedGetSessionId();
}
return _id;
}
}
/*
* The length of a session before it times out, in minutes.
*/
public int Timeout {
get {return _timeout;}
set {
if (value <= 0) {
throw new ArgumentException(SR.GetString(SR.Timeout_must_be_positive));
}
if (value > SessionStateModule.MAX_CACHE_BASED_TIMEOUT_MINUTES &&
(Mode == SessionStateMode.InProc ||
Mode == SessionStateMode.StateServer)) {
throw new ArgumentException(
SR.GetString(SR.Invalid_cache_based_session_timeout));
}
_timeout = value;
}
}
/*
* Is this a new session?
*/
///
/// [To be supplied.]
///
public bool IsNewSession {
get {return _newSession;}
}
/*
* Is session state in a separate process
*/
///
/// [To be supplied.]
///
public SessionStateMode Mode {
get {return _mode;}
}
/*
* Is session state cookieless?
*/
public bool IsCookieless {
get {
if (_stateModule != null) {
// See
return _stateModule.SessionIDManagerUseCookieless;
}
else {
// For container created by custom session state module,
// sorry, we currently don't have a way to tell and thus we rely blindly
// on cookieMode.
return CookieMode == HttpCookieMode.UseUri;
}
}
}
public HttpCookieMode CookieMode {
get {return _cookieMode;}
}
/*
* Abandon the session.
*
*/
///
/// [To be supplied.]
///
public void Abandon() {
_abandon = true;
}
///
/// [To be supplied.]
///
public int LCID {
//
get { return Thread.CurrentThread.CurrentCulture.LCID; }
set { Thread.CurrentThread.CurrentCulture = HttpServerUtility.CreateReadOnlyCultureInfo(value); }
}
///
/// [To be supplied.]
///
public int CodePage {
//
get {
if (HttpContext.Current != null)
return HttpContext.Current.Response.ContentEncoding.CodePage;
else
return Encoding.Default.CodePage;
}
set {
if (HttpContext.Current != null)
HttpContext.Current.Response.ContentEncoding = Encoding.GetEncoding(value);
}
}
public bool IsAbandoned {
get {return _abandon;}
}
public HttpStaticObjectsCollection StaticObjects {
get { return _staticObjects;}
}
public Object this[String name]
{
get {
return _sessionItems[name];
}
set {
_sessionItems[name] = value;
}
}
///
/// [To be supplied.]
///
public Object this[int index]
{
get {return _sessionItems[index];}
set {_sessionItems[index] = value;}
}
///
/// [To be supplied.]
///
public void Add(String name, Object value) {
_sessionItems[name] = value;
}
///
/// [To be supplied.]
///
public void Remove(String name) {
_sessionItems.Remove(name);
}
///
/// [To be supplied.]
///
public void RemoveAt(int index) {
_sessionItems.RemoveAt(index);
}
///
/// [To be supplied.]
///
public void Clear() {
_sessionItems.Clear();
}
///
/// [To be supplied.]
///
public void RemoveAll() {
Clear();
}
///
/// [To be supplied.]
///
public int Count {
get {return _sessionItems.Count;}
}
///
/// [To be supplied.]
///
public NameObjectCollectionBase.KeysCollection Keys {
get {return _sessionItems.Keys;}
}
///
/// [To be supplied.]
///
public IEnumerator GetEnumerator() {
return _sessionItems.GetEnumerator();
}
///
/// [To be supplied.]
///
public void CopyTo(Array array, int index) {
for (IEnumerator e = this.GetEnumerator(); e.MoveNext();)
array.SetValue(e.Current, index++);
}
///
/// [To be supplied.]
///
public Object SyncRoot {
get { return this;}
}
///
/// [To be supplied.]
///
public bool IsReadOnly {
get { return _isReadonly;}
}
///
/// [To be supplied.]
///
public bool IsSynchronized {
get { return false;}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HttpRequestBase.cs
- UIInitializationException.cs
- SqlProviderServices.cs
- AssemblyBuilder.cs
- Bezier.cs
- CurrencyManager.cs
- figurelengthconverter.cs
- SafeViewOfFileHandle.cs
- UriExt.cs
- ObjectMemberMapping.cs
- WebPartEventArgs.cs
- SiteMapSection.cs
- TypedAsyncResult.cs
- XmlSerializableServices.cs
- SiteMapDataSourceView.cs
- TableChangeProcessor.cs
- exports.cs
- ManagementScope.cs
- GrammarBuilderPhrase.cs
- LingerOption.cs
- RedistVersionInfo.cs
- GridViewAutomationPeer.cs
- Byte.cs
- QilFunction.cs
- ADMembershipUser.cs
- ScalarConstant.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- TextTreeFixupNode.cs
- RsaSecurityKey.cs
- RichTextBoxAutomationPeer.cs
- ConfigsHelper.cs
- DataGridViewIntLinkedList.cs
- NetworkStream.cs
- RectConverter.cs
- WebPartCatalogCloseVerb.cs
- BitmapEffectInputConnector.cs
- DataGridViewButtonCell.cs
- InkCollectionBehavior.cs
- SqlBulkCopyColumnMappingCollection.cs
- XPathChildIterator.cs
- DataErrorValidationRule.cs
- UnknownBitmapEncoder.cs
- Regex.cs
- SHA384.cs
- SynchronizedInputAdaptor.cs
- NamedPipeHostedTransportConfiguration.cs
- ObjectMaterializedEventArgs.cs
- Operators.cs
- PackagePartCollection.cs
- DataGridSortCommandEventArgs.cs
- ImageIndexConverter.cs
- TraceSection.cs
- SessionIDManager.cs
- FillBehavior.cs
- SynchronizingStream.cs
- LinearQuaternionKeyFrame.cs
- BitmapEffectGroup.cs
- WebServicesSection.cs
- TabItem.cs
- PasswordPropertyTextAttribute.cs
- WebBrowserContainer.cs
- HttpStreamXmlDictionaryReader.cs
- altserialization.cs
- ReservationNotFoundException.cs
- DataServiceResponse.cs
- VScrollBar.cs
- PropertyState.cs
- StorageEntityContainerMapping.cs
- NavigationPropertyEmitter.cs
- RegexCompiler.cs
- SiteMapProvider.cs
- IPGlobalProperties.cs
- ProfileSettingsCollection.cs
- RegisteredHiddenField.cs
- TextRangeEditTables.cs
- RoleManagerSection.cs
- SymbolDocumentGenerator.cs
- DataGridLinkButton.cs
- ApplicationFileParser.cs
- Bits.cs
- SafeNativeMethods.cs
- RemoteWebConfigurationHostStream.cs
- GridViewSortEventArgs.cs
- ConfigurationSectionCollection.cs
- base64Transforms.cs
- Geometry3D.cs
- ConstantProjectedSlot.cs
- DataException.cs
- ResXResourceWriter.cs
- AttributeUsageAttribute.cs
- Italic.cs
- WebPartZone.cs
- PerspectiveCamera.cs
- XpsResourcePolicy.cs
- TempFiles.cs
- ToolbarAUtomationPeer.cs
- VideoDrawing.cs
- TabItemWrapperAutomationPeer.cs
- PermissionToken.cs
- ReadContentAsBinaryHelper.cs