Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HelpInfo.cs
- TagMapCollection.cs
- EndpointIdentity.cs
- DataGridViewComboBoxColumnDesigner.cs
- JoinCqlBlock.cs
- XamlFigureLengthSerializer.cs
- PageSettings.cs
- DBNull.cs
- VerificationAttribute.cs
- Publisher.cs
- DesignerEditorPartChrome.cs
- DatagridviewDisplayedBandsData.cs
- SchemaTypeEmitter.cs
- RsaSecurityTokenAuthenticator.cs
- BrowsableAttribute.cs
- SortDescriptionCollection.cs
- CodeGroup.cs
- ConsoleCancelEventArgs.cs
- RectangleGeometry.cs
- PersonalizationStateInfoCollection.cs
- DefaultAutoFieldGenerator.cs
- UnknownWrapper.cs
- entitydatasourceentitysetnameconverter.cs
- ThreadAttributes.cs
- Polygon.cs
- WorkflowMarkupSerializationException.cs
- XmlIlTypeHelper.cs
- StaticFileHandler.cs
- OleDbStruct.cs
- PointCollection.cs
- safelink.cs
- Size3DValueSerializer.cs
- XMLSchema.cs
- SoapExtensionImporter.cs
- LayoutTableCell.cs
- DataBoundControlAdapter.cs
- OdbcParameterCollection.cs
- GlyphRun.cs
- TableSectionStyle.cs
- DispatcherProcessingDisabled.cs
- XmlAttributeOverrides.cs
- XmlNavigatorStack.cs
- DbProviderFactoriesConfigurationHandler.cs
- Vector.cs
- ToolStripCollectionEditor.cs
- ResumeStoryboard.cs
- TypeUtil.cs
- Container.cs
- DesignTable.cs
- ConfigurationStrings.cs
- PropertyDescriptorCollection.cs
- CharacterMetrics.cs
- ToolbarAUtomationPeer.cs
- MetadataCache.cs
- InternalConfigSettingsFactory.cs
- ChannelManager.cs
- ToolStripTextBox.cs
- RecognizerInfo.cs
- SamlEvidence.cs
- TypeNameConverter.cs
- FixedLineResult.cs
- Metadata.cs
- XmlRawWriter.cs
- SqlTriggerAttribute.cs
- ListViewInsertionMark.cs
- RecognizerInfo.cs
- QueryOutputWriter.cs
- xml.cs
- InputReferenceExpression.cs
- ProcessProtocolHandler.cs
- ContainerParagraph.cs
- LoginUtil.cs
- EncoderNLS.cs
- LayeredChannelListener.cs
- Propagator.cs
- ByteAnimation.cs
- DocumentSchemaValidator.cs
- Int64.cs
- ByteStack.cs
- WebServiceMethodData.cs
- WindowsListViewItemCheckBox.cs
- SiteMapNodeCollection.cs
- MultilineStringConverter.cs
- TextSelectionProcessor.cs
- CodeActivityMetadata.cs
- SchemaDeclBase.cs
- UserControl.cs
- Int16Converter.cs
- WrappedReader.cs
- MergablePropertyAttribute.cs
- SourceFileBuildProvider.cs
- ParallelEnumerable.cs
- XPathParser.cs
- SafeArchiveContext.cs
- SQLMembershipProvider.cs
- ICspAsymmetricAlgorithm.cs
- SignatureGenerator.cs
- TableCell.cs
- ViewManagerAttribute.cs
- BindingValueChangedEventArgs.cs