Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- SqlFileStream.cs
- ServiceEndpointCollection.cs
- SortedDictionary.cs
- StorageEntityContainerMapping.cs
- HijriCalendar.cs
- DataSourceCollectionBase.cs
- AssemblyFilter.cs
- HtmlGenericControl.cs
- SignedXml.cs
- ObjectToIdCache.cs
- SystemParameters.cs
- ProcessRequestArgs.cs
- BoundColumn.cs
- Validator.cs
- InvalidAsynchronousStateException.cs
- Win32.cs
- BaseDataListPage.cs
- Html32TextWriter.cs
- AppendHelper.cs
- MaskedTextProvider.cs
- SqlPersistenceProviderFactory.cs
- DbInsertCommandTree.cs
- WebPartCatalogCloseVerb.cs
- ValueTypeFixupInfo.cs
- UpdatableGenericsFeature.cs
- SourceLineInfo.cs
- AttributeUsageAttribute.cs
- DataSourceControl.cs
- ActivityCodeDomReferenceService.cs
- ApplicationGesture.cs
- DropShadowBitmapEffect.cs
- TemplateContentLoader.cs
- ResourcesChangeInfo.cs
- objectquery_tresulttype.cs
- TabItem.cs
- BaseCollection.cs
- DiscoveryMessageSequence11.cs
- JournalNavigationScope.cs
- SimpleHandlerFactory.cs
- DataKeyCollection.cs
- ListViewItemCollectionEditor.cs
- MailAddressParser.cs
- TypeBuilderInstantiation.cs
- COM2EnumConverter.cs
- HtmlTableRow.cs
- StrokeFIndices.cs
- MaterialCollection.cs
- Freezable.cs
- DBDataPermission.cs
- MailMessage.cs
- PropertyGridEditorPart.cs
- RectAnimation.cs
- CompoundFileReference.cs
- ADMembershipProvider.cs
- SkewTransform.cs
- PasswordRecovery.cs
- ResourceReferenceExpression.cs
- SchemaCollectionCompiler.cs
- PropertyToken.cs
- SelectionWordBreaker.cs
- TextBox.cs
- EdmTypeAttribute.cs
- ScriptControl.cs
- SAPICategories.cs
- InputLanguageManager.cs
- PathFigureCollection.cs
- System.Data.OracleClient_BID.cs
- IPEndPoint.cs
- bidPrivateBase.cs
- InputGestureCollection.cs
- Drawing.cs
- ToolStripPanelDesigner.cs
- XsltInput.cs
- LogicalExpressionEditor.cs
- ModuleConfigurationInfo.cs
- GeneratedView.cs
- AppManager.cs
- InfocardInteractiveChannelInitializer.cs
- DataSvcMapFileSerializer.cs
- HttpResponseWrapper.cs
- OSFeature.cs
- PartialClassGenerationTaskInternal.cs
- TraceHandlerErrorFormatter.cs
- SystemNetHelpers.cs
- TrackBar.cs
- SplitterCancelEvent.cs
- ViewUtilities.cs
- Qualifier.cs
- ContextMenuService.cs
- StructuredCompositeActivityDesigner.cs
- ImageListUtils.cs
- OrderPreservingPipeliningSpoolingTask.cs
- DataGridViewRowCollection.cs
- RequestUriProcessor.cs
- OleDbEnumerator.cs
- SerializationException.cs
- ScrollBar.cs
- DataGridViewRow.cs
- ProfileManager.cs
- EventLogRecord.cs