Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataWeb / Server / System / Data / Services / HttpContextServiceHost.cs / 2 / HttpContextServiceHost.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Provides an HttpContext-based implementation.
//
//
// @owner [....]
//---------------------------------------------------------------------
namespace System.Data.Services
{
#region Namespaces.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.ServiceModel.Channels;
using System.ServiceModel.Web;
using System.Text;
using System.Xml;
#endregion Namespaces.
///
/// Provides access to the environment for a DataService, including information about the current request, based
/// on the current WebOperationContext.
///
internal class HttpContextServiceHost : IDataServiceHost
{
#region Private fields.
/// Message sent to server.
private readonly Stream incomingMessageBody;
/// The WCF-based operation context.
private readonly WebOperationContext operationContext;
/// Whether an error was found when processing this request.
private bool errorFound;
#endregion Private fields.
#region Constructors.
///
/// Initializes a new System.Data.Services.HttpContextServiceHost instance.
///
/// Incoming message body to process.
internal HttpContextServiceHost(Stream messageBody)
{
// We capture the current context at initialization time rather
// than accessing it repeatedly.
this.incomingMessageBody = messageBody;
this.operationContext = WebOperationContext.Current;
if (this.operationContext == null)
{
throw new InvalidOperationException(Strings.HttpContextServiceHost_WebOperationContextCurrentMissing);
}
}
#endregion Constructors.
#region Properties.
///
/// Gets the character set encoding that the client requested,
/// possibly null.
///
string IDataServiceHost.RequestAcceptCharSet
{
get
{
// Returns a string that contains the comma-separated list of values
// associated with the specified key, if found; otherwise, null.
return this.operationContext.IncomingRequest.Headers[HttpRequestHeader.AcceptCharset];
}
}
/// Gets or sets the HTTP MIME type of the output stream.
string IDataServiceHost.ResponseContentType
{
get
{
return this.operationContext.OutgoingResponse.ContentType;
}
set
{
this.operationContext.OutgoingResponse.ContentType = value;
}
}
/// Gets the HTTP MIME type of the input stream.
string IDataServiceHost.RequestContentType
{
get
{
return this.operationContext.IncomingRequest.ContentType;
}
}
///
/// Gets a comma-separated list of client-supported MIME Accept types.
///
string IDataServiceHost.RequestAccept
{
get
{
return this.operationContext.IncomingRequest.Accept;
}
}
///
/// Gets the HTTP data transfer method (such as GET, POST, or HEAD) used by the client.
///
string IDataServiceHost.RequestHttpMethod
{
get
{
string result;
string[] methodValues = this.operationContext.IncomingRequest.Headers.GetValues(XmlConstants.HttpXMethod);
if (methodValues == null || methodValues.Length == 0)
{
result = this.operationContext.IncomingRequest.Method;
}
else if (methodValues.Length == 1)
{
result = methodValues[0];
if (this.operationContext.IncomingRequest.Method != XmlConstants.HttpMethodPost)
{
throw DataServiceException.CreateBadRequestError(Strings.HttpContextServiceHost_XMethodNotUsingPost);
}
if (result != XmlConstants.HttpMethodDelete && result != XmlConstants.HttpMethodPut && result != XmlConstants.HttpMethodMerge)
{
throw DataServiceException.CreateBadRequestError(Strings.HttpContextServiceHost_XMethodIncorrectValue(result));
}
}
else
{
throw DataServiceException.CreateBadRequestError(Strings.HttpContextServiceHost_XMethodIncorrectCount(methodValues.Length));
}
return result;
}
}
/// Gets the value of the If-Match header from the request made
string IDataServiceHost.RequestIfMatch
{
get
{
return this.operationContext.IncomingRequest.Headers[HttpRequestHeader.IfMatch];
}
}
/// Gets the value of the If-None-Match header from the request made
string IDataServiceHost.RequestIfNoneMatch
{
get
{
return this.operationContext.IncomingRequest.Headers[HttpRequestHeader.IfNoneMatch];
}
}
/// Gets the value for the MaxDataServiceVersion request header.
string IDataServiceHost.RequestMaxVersion
{
get
{
return this.operationContext.IncomingRequest.Headers[XmlConstants.HttpMaxDataServiceVersion];
}
}
/// Gets the value for the DataServiceVersion request header.
string IDataServiceHost.RequestVersion
{
get
{
return this.operationContext.IncomingRequest.Headers[XmlConstants.HttpDataServiceVersion];
}
}
/// Gets the absolute URI to the resource upon which to apply the request.
Uri IDataServiceHost.AbsoluteRequestUri
{
get
{
UriTemplateMatch match = this.operationContext.IncomingRequest.UriTemplateMatch;
Uri requestUri = WebUtil.ApplyHostHeader(match.RequestUri, this.HostHeader);
return requestUri;
}
}
/// Gets or sets the Cache-Control header on the response.
string IDataServiceHost.ResponseCacheControl
{
get { return this.operationContext.OutgoingResponse.Headers[HttpResponseHeader.CacheControl]; }
set { this.operationContext.OutgoingResponse.Headers[HttpResponseHeader.CacheControl] = value; }
}
/// Gets/Sets the value of the ETag header on the outgoing response
string IDataServiceHost.ResponseETag
{
get
{
return this.operationContext.OutgoingResponse.ETag;
}
set
{
this.operationContext.OutgoingResponse.ETag = value;
}
}
/// Gets or sets the Location header on the response.
string IDataServiceHost.ResponseLocation
{
get { return this.operationContext.OutgoingResponse.Headers[HttpResponseHeader.Location]; }
set { this.operationContext.OutgoingResponse.Headers[HttpResponseHeader.Location] = value; }
}
///
/// Gets/Sets the status code for the request made.
///
int IDataServiceHost.ResponseStatusCode
{
get
{
return (int) this.operationContext.OutgoingResponse.StatusCode;
}
set
{
this.operationContext.OutgoingResponse.StatusCode = (HttpStatusCode) value;
}
}
///
/// Gets the to be written to send a response
/// to the client.
///
Stream IDataServiceHost.ResponseStream
{
get
{
// The ResponseStream is not directly accessible - this would
// prevent WCF from streaming results back. For the WCF host,
// a Message subclass should write directly in the OnBodyWrite
// method.
throw Error.NotSupported();
}
}
/// Gets or sets the value for the DataServiceVersion response header.
string IDataServiceHost.ResponseVersion
{
get { return this.operationContext.OutgoingResponse.Headers[XmlConstants.HttpDataServiceVersion]; }
set { this.operationContext.OutgoingResponse.Headers[XmlConstants.HttpDataServiceVersion] = value; }
}
/// Gets the absolute URI to the service.
Uri IDataServiceHost.AbsoluteServiceUri
{
get
{
UriTemplateMatch match = this.operationContext.IncomingRequest.UriTemplateMatch;
// We never want to consider the last segment of the base URI a 'document' type
// of segment to be replaced, ie, http://foo/svc.svc should never remove svc.svc
// from the path.
Uri baseUri = match.BaseUri;
if (!String.IsNullOrEmpty(baseUri.Fragment))
{
throw new InvalidOperationException(Strings.HttpContextServiceHost_IncomingTemplateMatchFragment(baseUri));
}
if (!String.IsNullOrEmpty(baseUri.Query))
{
throw new InvalidOperationException(Strings.HttpContextServiceHost_IncomingTemplateMatchQuery(baseUri));
}
baseUri = WebUtil.EnsureLastSegmentEmpty(baseUri);
baseUri = WebUtil.ApplyHostHeader(baseUri, this.HostHeader);
return baseUri;
}
}
///
/// Gets the from which the request data can be read from
/// to the client.
///
Stream IDataServiceHost.RequestStream
{
[DebuggerStepThrough]
get { return this.incomingMessageBody; }
}
/// Whether an error was found when processing this request.
internal bool ErrorFound
{
get { return this.errorFound; }
}
/// The value for the Host header in the request, possibly null.
private string HostHeader
{
get { return this.operationContext.IncomingRequest.Headers[HttpRequestHeader.Host]; }
}
#endregion Properties.
#region Methods.
/// Gets the value for the specified item in the request query string.
/// Item to return.
///
/// The value for the specified item in the request query string;
/// null if is not found.
///
string IDataServiceHost.GetQueryStringItem(string item)
{
Debug.Assert(item != null, "item != null");
Debug.Assert(item.Trim() == item, "item.Trim() == item - otherwise, there are leading/trailing spaces in the name");
System.Collections.Specialized.NameValueCollection collection = this.operationContext.IncomingRequest.UriTemplateMatch.QueryParameters;
string[] values = collection.GetValues(item);
if (values == null || values.Length == 0)
{
// Do a scan of arguments ignoring whitespace (SQLBUDT #555944).
string keyFound = null;
foreach (string key in collection.Keys)
{
if (key != null && StringComparer.OrdinalIgnoreCase.Equals(key.Trim(), item))
{
if (keyFound != null)
{
throw DataServiceException.CreateBadRequestError(Strings.HttpContextServiceHost_AmbiguousItemName(item, keyFound, key));
}
keyFound = key;
values = collection.GetValues(key);
}
}
if (values == null || values.Length == 0)
{
return null;
}
}
Debug.Assert(values != null && values.Length > 0, "values != null && values.Length > 0 - otherwise we should have returned already");
if (values.Length == 1)
{
return values[0];
}
else
{
throw DataServiceException.CreateSyntaxError();
}
}
///
/// Method to handle a data service exception during processing.
///
/// Exception handling description.
void IDataServiceHost.ProcessException(HandleExceptionArgs args)
{
Debug.Assert(this.operationContext != null, "this.operationContext != null");
this.errorFound = true;
if (!args.ResponseWritten)
{
((IDataServiceHost)this).ResponseStatusCode = args.ResponseStatusCode;
((IDataServiceHost)this).ResponseContentType = args.ResponseContentType;
if (args.ResponseAllowHeader != null)
{
this.operationContext.OutgoingResponse.Headers[HttpResponseHeader.Allow] = args.ResponseAllowHeader;
}
}
}
/// Verifies that query parameters are valid.
internal void VerifyQueryParameters()
{
HashSet namesFound = new HashSet(StringComparer.Ordinal);
System.Collections.Specialized.NameValueCollection collection = this.operationContext.IncomingRequest.UriTemplateMatch.QueryParameters;
for (int i = 0; i < collection.Count; i++)
{
string name = collection.GetKey(i);
if (name == null)
{
// These are values of the form a&b&c, without '='. We just make sure they aren't system
// values at all.
string[] values = collection.GetValues(i);
if (values != null)
{
for (int j = 0; j < values.Length; j++)
{
string value = values[j].Trim();
if (value.Length > 0 && value[0] == '$')
{
throw DataServiceException.CreateBadRequestError(
Strings.HttpContextServiceHost_QueryParameterMustBeSpecifiedOnce(value));
}
}
}
continue;
}
name = name.Trim();
if (!namesFound.Add(name))
{
throw DataServiceException.CreateBadRequestError(
Strings.HttpContextServiceHost_QueryParameterMustBeSpecifiedOnce(name));
}
if (name.Length > 0 && name[0] == '$')
{
if (name != XmlConstants.HttpQueryStringExpand &&
name != XmlConstants.HttpQueryStringFilter &&
name != XmlConstants.HttpQueryStringOrderBy &&
name != XmlConstants.HttpQueryStringSkip &&
name != XmlConstants.HttpQueryStringTop)
{
throw DataServiceException.CreateBadRequestError(
Strings.HttpContextServiceHost_UnknownQueryParameter(name));
}
string[] values = collection.GetValues(i);
if (values == null || values.Length != 1)
{
throw DataServiceException.CreateBadRequestError(
Strings.HttpContextServiceHost_QueryParameterMustBeSpecifiedOnce(name));
}
}
}
}
#endregion Methods.
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Provides an HttpContext-based implementation.
//
//
// @owner [....]
//---------------------------------------------------------------------
namespace System.Data.Services
{
#region Namespaces.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.ServiceModel.Channels;
using System.ServiceModel.Web;
using System.Text;
using System.Xml;
#endregion Namespaces.
///
/// Provides access to the environment for a DataService, including information about the current request, based
/// on the current WebOperationContext.
///
internal class HttpContextServiceHost : IDataServiceHost
{
#region Private fields.
/// Message sent to server.
private readonly Stream incomingMessageBody;
/// The WCF-based operation context.
private readonly WebOperationContext operationContext;
/// Whether an error was found when processing this request.
private bool errorFound;
#endregion Private fields.
#region Constructors.
///
/// Initializes a new System.Data.Services.HttpContextServiceHost instance.
///
/// Incoming message body to process.
internal HttpContextServiceHost(Stream messageBody)
{
// We capture the current context at initialization time rather
// than accessing it repeatedly.
this.incomingMessageBody = messageBody;
this.operationContext = WebOperationContext.Current;
if (this.operationContext == null)
{
throw new InvalidOperationException(Strings.HttpContextServiceHost_WebOperationContextCurrentMissing);
}
}
#endregion Constructors.
#region Properties.
///
/// Gets the character set encoding that the client requested,
/// possibly null.
///
string IDataServiceHost.RequestAcceptCharSet
{
get
{
// Returns a string that contains the comma-separated list of values
// associated with the specified key, if found; otherwise, null.
return this.operationContext.IncomingRequest.Headers[HttpRequestHeader.AcceptCharset];
}
}
/// Gets or sets the HTTP MIME type of the output stream.
string IDataServiceHost.ResponseContentType
{
get
{
return this.operationContext.OutgoingResponse.ContentType;
}
set
{
this.operationContext.OutgoingResponse.ContentType = value;
}
}
/// Gets the HTTP MIME type of the input stream.
string IDataServiceHost.RequestContentType
{
get
{
return this.operationContext.IncomingRequest.ContentType;
}
}
///
/// Gets a comma-separated list of client-supported MIME Accept types.
///
string IDataServiceHost.RequestAccept
{
get
{
return this.operationContext.IncomingRequest.Accept;
}
}
///
/// Gets the HTTP data transfer method (such as GET, POST, or HEAD) used by the client.
///
string IDataServiceHost.RequestHttpMethod
{
get
{
string result;
string[] methodValues = this.operationContext.IncomingRequest.Headers.GetValues(XmlConstants.HttpXMethod);
if (methodValues == null || methodValues.Length == 0)
{
result = this.operationContext.IncomingRequest.Method;
}
else if (methodValues.Length == 1)
{
result = methodValues[0];
if (this.operationContext.IncomingRequest.Method != XmlConstants.HttpMethodPost)
{
throw DataServiceException.CreateBadRequestError(Strings.HttpContextServiceHost_XMethodNotUsingPost);
}
if (result != XmlConstants.HttpMethodDelete && result != XmlConstants.HttpMethodPut && result != XmlConstants.HttpMethodMerge)
{
throw DataServiceException.CreateBadRequestError(Strings.HttpContextServiceHost_XMethodIncorrectValue(result));
}
}
else
{
throw DataServiceException.CreateBadRequestError(Strings.HttpContextServiceHost_XMethodIncorrectCount(methodValues.Length));
}
return result;
}
}
/// Gets the value of the If-Match header from the request made
string IDataServiceHost.RequestIfMatch
{
get
{
return this.operationContext.IncomingRequest.Headers[HttpRequestHeader.IfMatch];
}
}
/// Gets the value of the If-None-Match header from the request made
string IDataServiceHost.RequestIfNoneMatch
{
get
{
return this.operationContext.IncomingRequest.Headers[HttpRequestHeader.IfNoneMatch];
}
}
/// Gets the value for the MaxDataServiceVersion request header.
string IDataServiceHost.RequestMaxVersion
{
get
{
return this.operationContext.IncomingRequest.Headers[XmlConstants.HttpMaxDataServiceVersion];
}
}
/// Gets the value for the DataServiceVersion request header.
string IDataServiceHost.RequestVersion
{
get
{
return this.operationContext.IncomingRequest.Headers[XmlConstants.HttpDataServiceVersion];
}
}
/// Gets the absolute URI to the resource upon which to apply the request.
Uri IDataServiceHost.AbsoluteRequestUri
{
get
{
UriTemplateMatch match = this.operationContext.IncomingRequest.UriTemplateMatch;
Uri requestUri = WebUtil.ApplyHostHeader(match.RequestUri, this.HostHeader);
return requestUri;
}
}
/// Gets or sets the Cache-Control header on the response.
string IDataServiceHost.ResponseCacheControl
{
get { return this.operationContext.OutgoingResponse.Headers[HttpResponseHeader.CacheControl]; }
set { this.operationContext.OutgoingResponse.Headers[HttpResponseHeader.CacheControl] = value; }
}
/// Gets/Sets the value of the ETag header on the outgoing response
string IDataServiceHost.ResponseETag
{
get
{
return this.operationContext.OutgoingResponse.ETag;
}
set
{
this.operationContext.OutgoingResponse.ETag = value;
}
}
/// Gets or sets the Location header on the response.
string IDataServiceHost.ResponseLocation
{
get { return this.operationContext.OutgoingResponse.Headers[HttpResponseHeader.Location]; }
set { this.operationContext.OutgoingResponse.Headers[HttpResponseHeader.Location] = value; }
}
///
/// Gets/Sets the status code for the request made.
///
int IDataServiceHost.ResponseStatusCode
{
get
{
return (int) this.operationContext.OutgoingResponse.StatusCode;
}
set
{
this.operationContext.OutgoingResponse.StatusCode = (HttpStatusCode) value;
}
}
///
/// Gets the to be written to send a response
/// to the client.
///
Stream IDataServiceHost.ResponseStream
{
get
{
// The ResponseStream is not directly accessible - this would
// prevent WCF from streaming results back. For the WCF host,
// a Message subclass should write directly in the OnBodyWrite
// method.
throw Error.NotSupported();
}
}
/// Gets or sets the value for the DataServiceVersion response header.
string IDataServiceHost.ResponseVersion
{
get { return this.operationContext.OutgoingResponse.Headers[XmlConstants.HttpDataServiceVersion]; }
set { this.operationContext.OutgoingResponse.Headers[XmlConstants.HttpDataServiceVersion] = value; }
}
/// Gets the absolute URI to the service.
Uri IDataServiceHost.AbsoluteServiceUri
{
get
{
UriTemplateMatch match = this.operationContext.IncomingRequest.UriTemplateMatch;
// We never want to consider the last segment of the base URI a 'document' type
// of segment to be replaced, ie, http://foo/svc.svc should never remove svc.svc
// from the path.
Uri baseUri = match.BaseUri;
if (!String.IsNullOrEmpty(baseUri.Fragment))
{
throw new InvalidOperationException(Strings.HttpContextServiceHost_IncomingTemplateMatchFragment(baseUri));
}
if (!String.IsNullOrEmpty(baseUri.Query))
{
throw new InvalidOperationException(Strings.HttpContextServiceHost_IncomingTemplateMatchQuery(baseUri));
}
baseUri = WebUtil.EnsureLastSegmentEmpty(baseUri);
baseUri = WebUtil.ApplyHostHeader(baseUri, this.HostHeader);
return baseUri;
}
}
///
/// Gets the from which the request data can be read from
/// to the client.
///
Stream IDataServiceHost.RequestStream
{
[DebuggerStepThrough]
get { return this.incomingMessageBody; }
}
/// Whether an error was found when processing this request.
internal bool ErrorFound
{
get { return this.errorFound; }
}
/// The value for the Host header in the request, possibly null.
private string HostHeader
{
get { return this.operationContext.IncomingRequest.Headers[HttpRequestHeader.Host]; }
}
#endregion Properties.
#region Methods.
/// Gets the value for the specified item in the request query string.
/// Item to return.
///
/// The value for the specified item in the request query string;
/// null if is not found.
///
string IDataServiceHost.GetQueryStringItem(string item)
{
Debug.Assert(item != null, "item != null");
Debug.Assert(item.Trim() == item, "item.Trim() == item - otherwise, there are leading/trailing spaces in the name");
System.Collections.Specialized.NameValueCollection collection = this.operationContext.IncomingRequest.UriTemplateMatch.QueryParameters;
string[] values = collection.GetValues(item);
if (values == null || values.Length == 0)
{
// Do a scan of arguments ignoring whitespace (SQLBUDT #555944).
string keyFound = null;
foreach (string key in collection.Keys)
{
if (key != null && StringComparer.OrdinalIgnoreCase.Equals(key.Trim(), item))
{
if (keyFound != null)
{
throw DataServiceException.CreateBadRequestError(Strings.HttpContextServiceHost_AmbiguousItemName(item, keyFound, key));
}
keyFound = key;
values = collection.GetValues(key);
}
}
if (values == null || values.Length == 0)
{
return null;
}
}
Debug.Assert(values != null && values.Length > 0, "values != null && values.Length > 0 - otherwise we should have returned already");
if (values.Length == 1)
{
return values[0];
}
else
{
throw DataServiceException.CreateSyntaxError();
}
}
///
/// Method to handle a data service exception during processing.
///
/// Exception handling description.
void IDataServiceHost.ProcessException(HandleExceptionArgs args)
{
Debug.Assert(this.operationContext != null, "this.operationContext != null");
this.errorFound = true;
if (!args.ResponseWritten)
{
((IDataServiceHost)this).ResponseStatusCode = args.ResponseStatusCode;
((IDataServiceHost)this).ResponseContentType = args.ResponseContentType;
if (args.ResponseAllowHeader != null)
{
this.operationContext.OutgoingResponse.Headers[HttpResponseHeader.Allow] = args.ResponseAllowHeader;
}
}
}
/// Verifies that query parameters are valid.
internal void VerifyQueryParameters()
{
HashSet namesFound = new HashSet(StringComparer.Ordinal);
System.Collections.Specialized.NameValueCollection collection = this.operationContext.IncomingRequest.UriTemplateMatch.QueryParameters;
for (int i = 0; i < collection.Count; i++)
{
string name = collection.GetKey(i);
if (name == null)
{
// These are values of the form a&b&c, without '='. We just make sure they aren't system
// values at all.
string[] values = collection.GetValues(i);
if (values != null)
{
for (int j = 0; j < values.Length; j++)
{
string value = values[j].Trim();
if (value.Length > 0 && value[0] == '$')
{
throw DataServiceException.CreateBadRequestError(
Strings.HttpContextServiceHost_QueryParameterMustBeSpecifiedOnce(value));
}
}
}
continue;
}
name = name.Trim();
if (!namesFound.Add(name))
{
throw DataServiceException.CreateBadRequestError(
Strings.HttpContextServiceHost_QueryParameterMustBeSpecifiedOnce(name));
}
if (name.Length > 0 && name[0] == '$')
{
if (name != XmlConstants.HttpQueryStringExpand &&
name != XmlConstants.HttpQueryStringFilter &&
name != XmlConstants.HttpQueryStringOrderBy &&
name != XmlConstants.HttpQueryStringSkip &&
name != XmlConstants.HttpQueryStringTop)
{
throw DataServiceException.CreateBadRequestError(
Strings.HttpContextServiceHost_UnknownQueryParameter(name));
}
string[] values = collection.GetValues(i);
if (values == null || values.Length != 1)
{
throw DataServiceException.CreateBadRequestError(
Strings.HttpContextServiceHost_QueryParameterMustBeSpecifiedOnce(name));
}
}
}
}
#endregion Methods.
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ImageProxy.cs
- XslException.cs
- TableCell.cs
- FontStyleConverter.cs
- Menu.cs
- ProcessThread.cs
- ModelItemCollection.cs
- SynchronizedInputPattern.cs
- XmlDataProvider.cs
- CheckBoxFlatAdapter.cs
- ConstructorNeedsTagAttribute.cs
- CompositeTypefaceMetrics.cs
- FixedFlowMap.cs
- DbDeleteCommandTree.cs
- SamlAssertionKeyIdentifierClause.cs
- DefaultBinder.cs
- Base64Stream.cs
- Processor.cs
- XPathPatternParser.cs
- MimeFormReflector.cs
- Number.cs
- DependencyPropertyHelper.cs
- CompressedStack.cs
- ThreadNeutralSemaphore.cs
- RenameRuleObjectDialog.cs
- OleTxTransaction.cs
- MaterialGroup.cs
- Calendar.cs
- ServiceModelConfiguration.cs
- ResourceSet.cs
- RectConverter.cs
- EndpointDispatcherTable.cs
- SafeEventHandle.cs
- SchemaInfo.cs
- Geometry.cs
- parserscommon.cs
- GenerateScriptTypeAttribute.cs
- SiteOfOriginContainer.cs
- PasswordRecovery.cs
- DataGridViewColumnTypePicker.cs
- WebPartTransformerAttribute.cs
- WindowCollection.cs
- KeyProperty.cs
- DefaultConfirmation.cs
- DataGridItemEventArgs.cs
- WbemProvider.cs
- StorageEntityContainerMapping.cs
- DataGridCellAutomationPeer.cs
- DrawingAttributesDefaultValueFactory.cs
- FormParameter.cs
- HwndSourceKeyboardInputSite.cs
- EdmToObjectNamespaceMap.cs
- NegatedCellConstant.cs
- ConnectionStringSettings.cs
- XhtmlBasicLiteralTextAdapter.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- DbSourceParameterCollection.cs
- HitTestFilterBehavior.cs
- DiscoveryClientReferences.cs
- XsdCachingReader.cs
- SqlProfileProvider.cs
- RelationshipFixer.cs
- TextComposition.cs
- BamlTreeMap.cs
- X509Certificate2Collection.cs
- _StreamFramer.cs
- HttpSessionStateBase.cs
- listitem.cs
- DocumentScope.cs
- Itemizer.cs
- DocumentViewerConstants.cs
- SafeEventLogWriteHandle.cs
- ReadOnlyCollectionBase.cs
- Rotation3DKeyFrameCollection.cs
- DragCompletedEventArgs.cs
- KeyboardNavigation.cs
- AtomMaterializer.cs
- Point3DCollection.cs
- ScaleTransform3D.cs
- TreeViewTemplateSelector.cs
- IssuedTokenClientCredential.cs
- DataKey.cs
- ParseNumbers.cs
- OrderingInfo.cs
- StateMachineSubscription.cs
- OpenFileDialog.cs
- Translator.cs
- DetailsViewModeEventArgs.cs
- DESCryptoServiceProvider.cs
- TextCollapsingProperties.cs
- GB18030Encoding.cs
- TemplateEditingService.cs
- HtmlInputButton.cs
- ToolStripProgressBar.cs
- MatrixIndependentAnimationStorage.cs
- MenuItemStyle.cs
- Visitors.cs
- BitmapFrameEncode.cs
- HMAC.cs
- TdsParserStaticMethods.cs