August 19, 2020 at 3:16 pm
At the Master Data web app, in the Security section, when I go to edit a user or group in the Model tab, I get the error message: startIndex cannot be larger than length of string. Does anyone have any thoughts?
Thanks
the full error message is:
Server Error in '/MasterData' Application.
--------------------------------------------------------------------------------
startIndex cannot be larger than length of string.
Parameter name: startIndex
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentOutOfRangeException: startIndex cannot be larger than length of string.
Parameter name: startIndex
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[ArgumentOutOfRangeException: startIndex cannot be larger than length of string.
Parameter name: startIndex]
System.String.Substring(Int32 startIndex, Int32 length) +14793920
System.Linq.<>c__DisplayClass7_0`3.<CombineSelectors>b__0(TSource x) +23
System.Linq.WhereSelectArrayIterator`2.MoveNext() +78
System.Linq.Buffer1..ctor(IEnumerable
1 source) +152
System.Linq.Enumerable.ToArray(IEnumerable`1 source) +91
Microsoft.MasterDataServices.Core.BusinessLogic.Security.ToModelPrivileges(DataTable table, ResultType resultType) +1638
Microsoft.MasterDataServices.Core.BusinessLogic.Security.GetModelPrivilege(RequestContext context, Int32 principalId, SecurityResolutionType resolutionType, PrincipalType principalType, ResultType resultType, Collection`1 results) +213
Microsoft.MasterDataServices.Core.BusinessLogic.Security.PopulateModelPrivilege(RequestContext context, Collection`1 users, SecurityResolutionType resolutionType, ResultType resultType) +325
Microsoft.MasterDataServices.Core.BusinessLogic.Security.GetUserSecurity(RequestContext context, SecurityPrincipalsCriteria criteria, OperationResult results, Boolean pruneDenies) +751
Microsoft.MasterDataServices.Core.BusinessLogic.Security.GetSecurityPrincipal(RequestContext context, SecurityPrincipalsCriteria criteria, SecurityPrincipals principal) +482
Microsoft.MasterDataServices.Services.Service.SecurityPrincipalsGet(SecurityPrincipalsGetRequest request) +149
Microsoft.MasterDataServices.WebUI.ServiceAdapter.ExecuteRequest(MdmServiceOperation`2 operation, TRequestType request, String caller) +159
Microsoft.MasterDataServices.WebUI.ServiceAdapter.GetModelPrivileges(Guid principalId, PrincipalType principalType, SecurityResolutionType resolutionType) +421
Microsoft.MasterDataServices.WebUI.ServiceAdapter.CacheModelPrivileges(Guid principalId, PrincipalType principalType, SecurityResolutionType resolutionType) +109
Microsoft.MasterDataServices.WebUI.ServiceAdapter.GetModelPrivilegesFromCache(Guid principalId, PrincipalType principalType, SecurityResolutionType resolutionType) +149
Microsoft.MasterDataServices.WebUI.Common.ModelTreeview.GetModelPermissions(SecurityResolutionType resolutionType) +291
Microsoft.MasterDataServices.WebUI.Common.ModelTreeview.LoadTree(Node parentNode) +344
Microsoft.MasterDataServices.WebUI.Common.ModelTreeview.LoadData() +442
Microsoft.MasterDataServices.WebUI.Common.ModelTreeview.LoadData(String principalId, PrincipalType principalType, DisplayModeType displayMode, Int32 modelId) +158
Microsoft.MasterDataServices.WebUI.Security.Common.Models.LoadTree() +280
Microsoft.MasterDataServices.WebUI.Security.Common.Models.LoadData() +16
Microsoft.MasterDataServices.WebUI.Security.Common.SecurityEditPageBase.OnLoad(EventArgs e) +222
Microsoft.MasterDataServices.WebUI.Security.Common.Models.OnLoad(EventArgs e) +27
System.Web.UI.Control.LoadRecursive() +68
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3785
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.7.3535.0
The more you are prepared, the less you need it.
August 19, 2020 at 4:28 pm
So, there is a bug in the MDS web processes. This error happens when permission changes are made, and the MDS security does not do a complete job of clean up. So, you get internal security references that return NULL, and that breaks the web app.
This URL provides some details:
Use this query to find any problem entries - NULL's are not wanted, so any return records are a problem.
select * from [mdm].[viw_SYSTEM_SECURITY_ROLE_ACCESSCONTROL] as ssra
where ssra.Securable_MUID is null or ssra.Securable_Name is null
You will want to backup the data, but just deleting the problem records has been effective:
Example:
So, if you have a problem with the AttributeGroup, which is Object_ID = 5 and Securible_ID = 1
select * from mdm.tblSecurityRoleAccess where [Object_ID] =5 or Securable_ID = 1
-- backup, and delete
select * into dbo.tblSecurityRoleAccess_delete20200819 from mdm.tblSecurityRoleAccess
where [Object_ID] =5 and Securable_ID = 1 ;
go
-- review
select * from dbo.tblSecurityRoleAccess_delete20200819
go
-- then delete
delete from mdm.tblSecurityRoleAccess where [Object_ID] =5 and Securable_ID = 1 ;
go
The more you are prepared, the less you need it.
Viewing 2 posts - 1 through 1 (of 1 total)
You must be logged in to reply to this topic. Login to reply