Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / System.ServiceModel.Activation / System / ServiceModel / Activation / ServiceRoute.cs / 1305376 / ServiceRoute.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.ServiceModel.Activation
{
using System;
using System.Globalization;
using System.Web.Routing;
public class ServiceRoute : Route
{
internal const string LeftCurlyBracket = "{";
internal const string RightCurlyBracket = "}";
internal const string UnmatchedPathSegment = "{*pathInfo}";
internal const char PathSeperator = '/';
public ServiceRoute(string routePrefix, ServiceHostFactoryBase serviceHostFactory, Type serviceType)
: base(CheckAndCreateRouteString(routePrefix), new ServiceRouteHandler(routePrefix, serviceHostFactory, serviceType))
{
if (TD.AspNetRouteIsEnabled())
{
TD.AspNetRoute(routePrefix, serviceType.AssemblyQualifiedName, serviceHostFactory.GetType().AssemblyQualifiedName);
}
}
static string CheckAndCreateRouteString(string routePrefix)
{
// aspnet routing integration is supported only under aspnet compat mode
ServiceHostingEnvironment.EnsureInitialized();
if (!ServiceHostingEnvironment.AspNetCompatibilityEnabled)
{
throw FxTrace.Exception.AsError(new InvalidOperationException(SR.Hosting_RouteServiceRequiresCompatibilityMode));
}
// we support emptystring as routeprfix as aspnet allows it
if (routePrefix == null)
{
throw FxTrace.Exception.ArgumentNull("routePrefix");
}
else if (routePrefix.Contains(LeftCurlyBracket) || routePrefix.Contains(RightCurlyBracket))
{
throw FxTrace.Exception.Argument("routePrefix", SR.Hosting_CurlyBracketFoundInRoutePrefix("{", "}"));
}
if(routePrefix.EndsWith(PathSeperator.ToString(), StringComparison.CurrentCultureIgnoreCase)
|| routePrefix.Equals(String.Empty, StringComparison.CurrentCultureIgnoreCase))
{
routePrefix = string.Format(CultureInfo.CurrentCulture, "{0}{1}", routePrefix, UnmatchedPathSegment);
}
else
{
routePrefix = string.Format(CultureInfo.CurrentCulture, "{0}/{1}", routePrefix, UnmatchedPathSegment);
}
return routePrefix;
}
}
}
// 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
- SpnegoTokenProvider.cs
- DispatcherObject.cs
- ADMembershipUser.cs
- XmlRawWriter.cs
- TreeNode.cs
- TCEAdapterGenerator.cs
- ColorConverter.cs
- DataGridViewRowCancelEventArgs.cs
- RealProxy.cs
- HttpRequestTraceRecord.cs
- FramingDecoders.cs
- InternalRelationshipCollection.cs
- _UriTypeConverter.cs
- ProfessionalColors.cs
- PersonalizableTypeEntry.cs
- SessionStateSection.cs
- DefinitionUpdate.cs
- TextEndOfLine.cs
- QilBinary.cs
- DefaultShape.cs
- RealizationContext.cs
- ReadOnlyMetadataCollection.cs
- TextServicesManager.cs
- InstanceData.cs
- rsa.cs
- Collection.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- CodeDirectoryCompiler.cs
- SelectionChangedEventArgs.cs
- EntityViewGenerator.cs
- GradientStop.cs
- AttributeCallbackBuilder.cs
- DesignerTransaction.cs
- ping.cs
- ThicknessAnimation.cs
- TextServicesDisplayAttribute.cs
- DrawTreeNodeEventArgs.cs
- TransformerConfigurationWizardBase.cs
- HostedImpersonationContext.cs
- DesignerDataColumn.cs
- DataGridViewRowPrePaintEventArgs.cs
- SafeNativeMethods.cs
- XmlWriterSettings.cs
- AxHost.cs
- WithParamAction.cs
- Thread.cs
- NotifyIcon.cs
- CopyAttributesAction.cs
- ServiceOperationParameter.cs
- SmiEventSink.cs
- SyndicationDeserializer.cs
- HandlerBase.cs
- userdatakeys.cs
- HtmlInputRadioButton.cs
- CallbackValidator.cs
- NumericPagerField.cs
- EdmError.cs
- HtmlEncodedRawTextWriter.cs
- RectangleGeometry.cs
- ControlIdConverter.cs
- PanelDesigner.cs
- ChtmlSelectionListAdapter.cs
- MarshalDirectiveException.cs
- GACIdentityPermission.cs
- DocumentScope.cs
- XmlSchemaCollection.cs
- IDispatchConstantAttribute.cs
- EventPrivateKey.cs
- UiaCoreApi.cs
- TileModeValidation.cs
- ScriptIgnoreAttribute.cs
- Processor.cs
- XamlToRtfParser.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- PolyLineSegment.cs
- XmlWriterTraceListener.cs
- CodeParameterDeclarationExpressionCollection.cs
- Win32.cs
- MethodImplAttribute.cs
- GridViewRowPresenterBase.cs
- ErrorWebPart.cs
- SmtpDateTime.cs
- EntityContainer.cs
- SqlDataSourceWizardForm.cs
- UInt16.cs
- CompilerHelpers.cs
- IPipelineRuntime.cs
- DesignerDataView.cs
- SingleKeyFrameCollection.cs
- DataSysAttribute.cs
- ContractCodeDomInfo.cs
- SqlConnectionManager.cs
- MergeFilterQuery.cs
- InvokeWebServiceDesigner.cs
- FixedTextSelectionProcessor.cs
- DataBoundLiteralControl.cs
- LogSwitch.cs
- GridViewUpdatedEventArgs.cs
- WebPartConnectionsCancelEventArgs.cs
- AssemblyNameProxy.cs