Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / xsp / System / Web / Extensions / ui / RoleServiceManager.cs / 1 / RoleServiceManager.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI {
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Security.Permissions;
using System.Text;
using System.Web.Script.Serialization;
using System.Web;
using System.Web.ApplicationServices;
using System.Web.Resources;
using System.Web.Security;
[
AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal),
AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal),
DefaultProperty("Path"),
TypeConverter(typeof(EmptyStringExpandableObjectConverter))
]
public class RoleServiceManager {
private bool _loadRoles;
private string _path;
internal static void ConfigureRoleService(ref StringBuilder sb, HttpContext context, ScriptManager scriptManager, List proxies) {
string roleServiceUrl = null;
bool loadRoles = false;
RoleServiceManager roleManager;
if(scriptManager.HasRoleServiceManager) {
roleManager = scriptManager.RoleService;
// load roles?
loadRoles = roleManager.LoadRoles;
// get ScriptManager.Path
roleServiceUrl = roleManager.Path.Trim();
if(roleServiceUrl.Length > 0) {
roleServiceUrl = scriptManager.ResolveClientUrl(roleServiceUrl);
}
}
// combine proxy ServiceUrls (find the first one that has specified one)
if(proxies != null) {
foreach(ScriptManagerProxy proxy in proxies) {
if(proxy.HasRoleServiceManager) {
roleManager = proxy.RoleService;
// combine load roles
if (roleManager.LoadRoles) {
loadRoles = true;
}
// combine urls
roleServiceUrl = ApplicationServiceManager.MergeServiceUrls(roleManager.Path, roleServiceUrl, proxy);
}
}
}
RoleServiceManager.GenerateInitializationScript(ref sb, context, scriptManager, roleServiceUrl, loadRoles);
}
private static void GenerateInitializationScript(ref StringBuilder sb, HttpContext context, ScriptManager scriptManager, string serviceUrl, bool loadRoles) {
bool enabled = ApplicationServiceHelper.RoleServiceEnabled;
string defaultServicePath = null;
if (enabled) {
if (sb == null) {
sb = new StringBuilder(ApplicationServiceManager.StringBuilderCapacity);
}
// The default path points to the built-in service (if it is enabled)
// Note that the client can't default to this path because it doesn't know what the app root is, we must tell it.
// We must specify the default path to the proxy even if a custom path is provided, because on the client they could
// reset the path back to the default if they want.
defaultServicePath = scriptManager.ResolveClientUrl("~/" + System.Web.Script.Services.WebServiceData._roleServiceFileName);
sb.Append("Sys.Services._RoleService.DefaultWebServicePath = '");
sb.Append(JavaScriptString.QuoteString(defaultServicePath));
sb.Append("';\n");
}
bool pathSpecified = !String.IsNullOrEmpty(serviceUrl);
if (pathSpecified) {
// DevDiv Bug 71954:When loadRoles="true" and the path is set, we should not load the roles from the default path
// loadRoles script always retrieves the roles from default role provider, which is not correct if RolesService
// points to non default path. Hence throw when non default path and loadRoles both are specified.
if (defaultServicePath == null){
defaultServicePath = scriptManager.ResolveClientUrl("~/" + System.Web.Script.Services.WebServiceData._roleServiceFileName);
}
if (loadRoles && !String.Equals(serviceUrl, defaultServicePath, StringComparison.OrdinalIgnoreCase)) {
throw new InvalidOperationException(AtlasWeb.RoleServiceManager_LoadRolesWithNonDefaultPath);
}
if (sb == null) {
sb = new StringBuilder(ApplicationServiceManager.StringBuilderCapacity);
}
sb.Append("Sys.Services.RoleService.set_path('");
sb.Append(JavaScriptString.QuoteString(serviceUrl));
sb.Append("');\n");
}
if(loadRoles) {
string[] roles = Roles.GetRolesForUser();
if(roles != null && roles.Length > 0) {
if (sb == null) {
sb = new StringBuilder(ApplicationServiceManager.StringBuilderCapacity);
}
sb.Append("Sys.Services.RoleService._roles = Sys.Serialization.JavaScriptSerializer.deserialize('");
sb.Append(JavaScriptString.QuoteString(JavaScriptSerializer.SerializeInternal(roles)));
sb.Append("');\n");
}
}
}
[
DefaultValue(false),
Category("Behavior"),
NotifyParentProperty(true),
ResourceDescription("RoleServiceManager_LoadRoles")
]
public bool LoadRoles {
get {
return _loadRoles;
}
set {
_loadRoles = value;
}
}
[
DefaultValue(""),
Category("Behavior"),
NotifyParentProperty(true),
ResourceDescription("ApplicationServiceManager_Path"),
UrlProperty()
]
public string Path
{
get {
return _path ?? String.Empty;
}
set {
_path = value;
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI {
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Security.Permissions;
using System.Text;
using System.Web.Script.Serialization;
using System.Web;
using System.Web.ApplicationServices;
using System.Web.Resources;
using System.Web.Security;
[
AspNetHostingPermission(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal),
AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal),
DefaultProperty("Path"),
TypeConverter(typeof(EmptyStringExpandableObjectConverter))
]
public class RoleServiceManager {
private bool _loadRoles;
private string _path;
internal static void ConfigureRoleService(ref StringBuilder sb, HttpContext context, ScriptManager scriptManager, List proxies) {
string roleServiceUrl = null;
bool loadRoles = false;
RoleServiceManager roleManager;
if(scriptManager.HasRoleServiceManager) {
roleManager = scriptManager.RoleService;
// load roles?
loadRoles = roleManager.LoadRoles;
// get ScriptManager.Path
roleServiceUrl = roleManager.Path.Trim();
if(roleServiceUrl.Length > 0) {
roleServiceUrl = scriptManager.ResolveClientUrl(roleServiceUrl);
}
}
// combine proxy ServiceUrls (find the first one that has specified one)
if(proxies != null) {
foreach(ScriptManagerProxy proxy in proxies) {
if(proxy.HasRoleServiceManager) {
roleManager = proxy.RoleService;
// combine load roles
if (roleManager.LoadRoles) {
loadRoles = true;
}
// combine urls
roleServiceUrl = ApplicationServiceManager.MergeServiceUrls(roleManager.Path, roleServiceUrl, proxy);
}
}
}
RoleServiceManager.GenerateInitializationScript(ref sb, context, scriptManager, roleServiceUrl, loadRoles);
}
private static void GenerateInitializationScript(ref StringBuilder sb, HttpContext context, ScriptManager scriptManager, string serviceUrl, bool loadRoles) {
bool enabled = ApplicationServiceHelper.RoleServiceEnabled;
string defaultServicePath = null;
if (enabled) {
if (sb == null) {
sb = new StringBuilder(ApplicationServiceManager.StringBuilderCapacity);
}
// The default path points to the built-in service (if it is enabled)
// Note that the client can't default to this path because it doesn't know what the app root is, we must tell it.
// We must specify the default path to the proxy even if a custom path is provided, because on the client they could
// reset the path back to the default if they want.
defaultServicePath = scriptManager.ResolveClientUrl("~/" + System.Web.Script.Services.WebServiceData._roleServiceFileName);
sb.Append("Sys.Services._RoleService.DefaultWebServicePath = '");
sb.Append(JavaScriptString.QuoteString(defaultServicePath));
sb.Append("';\n");
}
bool pathSpecified = !String.IsNullOrEmpty(serviceUrl);
if (pathSpecified) {
// DevDiv Bug 71954:When loadRoles="true" and the path is set, we should not load the roles from the default path
// loadRoles script always retrieves the roles from default role provider, which is not correct if RolesService
// points to non default path. Hence throw when non default path and loadRoles both are specified.
if (defaultServicePath == null){
defaultServicePath = scriptManager.ResolveClientUrl("~/" + System.Web.Script.Services.WebServiceData._roleServiceFileName);
}
if (loadRoles && !String.Equals(serviceUrl, defaultServicePath, StringComparison.OrdinalIgnoreCase)) {
throw new InvalidOperationException(AtlasWeb.RoleServiceManager_LoadRolesWithNonDefaultPath);
}
if (sb == null) {
sb = new StringBuilder(ApplicationServiceManager.StringBuilderCapacity);
}
sb.Append("Sys.Services.RoleService.set_path('");
sb.Append(JavaScriptString.QuoteString(serviceUrl));
sb.Append("');\n");
}
if(loadRoles) {
string[] roles = Roles.GetRolesForUser();
if(roles != null && roles.Length > 0) {
if (sb == null) {
sb = new StringBuilder(ApplicationServiceManager.StringBuilderCapacity);
}
sb.Append("Sys.Services.RoleService._roles = Sys.Serialization.JavaScriptSerializer.deserialize('");
sb.Append(JavaScriptString.QuoteString(JavaScriptSerializer.SerializeInternal(roles)));
sb.Append("');\n");
}
}
}
[
DefaultValue(false),
Category("Behavior"),
NotifyParentProperty(true),
ResourceDescription("RoleServiceManager_LoadRoles")
]
public bool LoadRoles {
get {
return _loadRoles;
}
set {
_loadRoles = value;
}
}
[
DefaultValue(""),
Category("Behavior"),
NotifyParentProperty(true),
ResourceDescription("ApplicationServiceManager_Path"),
UrlProperty()
]
public string Path
{
get {
return _path ?? String.Empty;
}
set {
_path = value;
}
}
}
}
// 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
- TimeoutConverter.cs
- InfiniteIntConverter.cs
- MonitorWrapper.cs
- PinnedBufferMemoryStream.cs
- DifferencingCollection.cs
- DocComment.cs
- DataControlPagerLinkButton.cs
- EncodingInfo.cs
- Int32CAMarshaler.cs
- WorkflowShape.cs
- SqlDataSourceRefreshSchemaForm.cs
- TreeViewEvent.cs
- ModelVisual3D.cs
- QuaternionRotation3D.cs
- SqlError.cs
- StyleTypedPropertyAttribute.cs
- FormsAuthenticationUser.cs
- Selection.cs
- ServerIdentity.cs
- DataServiceHostFactory.cs
- LiteralSubsegment.cs
- Reference.cs
- ThreadExceptionDialog.cs
- XamlBrushSerializer.cs
- VectorAnimationBase.cs
- ConversionContext.cs
- Point4DValueSerializer.cs
- Tablet.cs
- SHA256.cs
- ListenerTraceUtility.cs
- TextTreeInsertElementUndoUnit.cs
- ProxyFragment.cs
- SqlParameterCollection.cs
- JournalEntry.cs
- EditorZone.cs
- SerialReceived.cs
- DrawingAttributeSerializer.cs
- SingleSelectRootGridEntry.cs
- UpdateEventArgs.cs
- RemoteAsymmetricSignatureFormatter.cs
- WindowExtensionMethods.cs
- CompoundFileIOPermission.cs
- Message.cs
- NamespaceEmitter.cs
- EntityParameterCollection.cs
- SystemIPInterfaceProperties.cs
- CollectionBase.cs
- DigitShape.cs
- ImageCodecInfoPrivate.cs
- SecurityPermission.cs
- ToolStripArrowRenderEventArgs.cs
- WCFBuildProvider.cs
- InvokeGenerator.cs
- WindowsListView.cs
- XmlSchemaImporter.cs
- PrintDialog.cs
- CompilerResults.cs
- OleServicesContext.cs
- EmptyQuery.cs
- StaticExtensionConverter.cs
- keycontainerpermission.cs
- PresentationSource.cs
- DetailsViewPagerRow.cs
- IntegerFacetDescriptionElement.cs
- PrincipalPermissionMode.cs
- EntityTypeEmitter.cs
- ClassValidator.cs
- CompoundFileDeflateTransform.cs
- BitmapCache.cs
- PeerNearMe.cs
- JapaneseLunisolarCalendar.cs
- PagePropertiesChangingEventArgs.cs
- DBPropSet.cs
- ListViewTableRow.cs
- Latin1Encoding.cs
- ExpressionLink.cs
- XmlQueryType.cs
- DecodeHelper.cs
- SemanticResultValue.cs
- ProcessHostMapPath.cs
- ContextMenuStripGroup.cs
- ClientTarget.cs
- PropertyDescriptor.cs
- Point4D.cs
- Stream.cs
- TextServicesProperty.cs
- CultureInfoConverter.cs
- MessageSecurityTokenVersion.cs
- StrongNameIdentityPermission.cs
- SqlBuilder.cs
- RsaElement.cs
- Helpers.cs
- UserControlParser.cs
- TraceSource.cs
- DataObject.cs
- selecteditemcollection.cs
- CategoryNameCollection.cs
- ManifestResourceInfo.cs
- TextEditorContextMenu.cs
- DataViewListener.cs