SoftwarePortal 8.6 - KeyNotFoundException error when Portal Admin opens User Requests

book

Article ID: 220549

calendar_today

Updated On:

Products

Software Management Solution

Issue/Introduction

When the Software Portal Managers try to approve the request, they receive the error "A problem occurred while loading the Software Portal. Contact IT Helpdesk for assistance"

The NS log shows an entry like:

MainController failure.
An item with the same key has already been added.

Steps to Reproduce:

  • Create user security group [IT Users]
  • Add User1 User2
  • Add Manager1 Manager 2
  • All users/managers are in IT Users group
  • User1 reports to Manager1
  • User2 Reports to Manager2
  • Manager2 reports to Manager1
  • Open SoftwarePortal and add IT Users group for both managers
  • Request Software with User2
  • Open SoftwarePortal with Manager1 (?or Manager2)
  • Navigate to User Requests page, see the error.

 

SMP Error:

"6/14/2021 4:55:41 PM","MainController failure.

The given key was not present in the dictionary.
[System.Collections.Generic.KeyNotFoundException @ mscorlib]
at System.ThrowHelper.ThrowKeyNotFoundException()
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at Altiris.SoftwarePortal.Resources.SoftwarePublishingUtil.MatchRequesters(AdUsersSearch helper, Guid managerGuid, Dictionary`2& allManagers, Dictionary`2& requesters, Dictionary`2& matchedReportees)
at Altiris.SoftwarePortal.Resources.SoftwarePublishingUtil.MatchRequesters(AdUsersSearch helper, Guid managerGuid, Dictionary`2& allManagers, Dictionary`2& requesters, Dictionary`2& matchedReportees)
at Altiris.SoftwarePortal.Resources.SoftwarePublishingUtil.FilterManagerSoftwareRequests(DataTable& allRequests, Guid managerGuid, Boolean onlyDirectRequests)
at Symantec.SoftwarePortal.Api.Helpers.SoftwareRequestHelper.GetManagerSoftwareRequests(SoftwareRequestGetContext context, PortalUser user)
at Symantec.SoftwarePortal.Api.Controllers.MainController.GetSoftwareRequests(SoftwareRequestGetContext softwareRequestGetContext)
at lambda_method(Closure , Object , Object[] )
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c_DisplayClass10.<GetExecutor>b_9(Object instance, Object[] methodParameters)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__0.MoveNext()

Exception logged from:
at Symantec.SoftwarePortal.Api.Controllers.ApiControllerExceptionHandler.OnException(System.Web.Http.Filters.HttpActionExecutedContext)
at System.Web.Http.Filters.ExceptionFilterAttribute.OnExceptionAsync(System.Web.Http.Filters.HttpActionExecutedContext, System.Threading.CancellationToken)
at System.Web.Http.Filters.ExceptionFilterAttribute+<ExecuteExceptionFilterAsyncCore>d__0.MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<TStateMachine>(TStateMachine&)
at System.Web.Http.Filters.ExceptionFilterAttribute.ExecuteExceptionFilterAsyncCore(System.Web.Http.Filters.HttpActionExecutedContext, System.Threading.CancellationToken)
at System.Web.Http.Filters.ExceptionFilterAttribute.System.Web.Http.Filters.IExceptionFilter.ExecuteExceptionFilterAsync(System.Web.Http.Filters.HttpActionExecutedContext, System.Threading.CancellationToken)
at System.Web.Http.Controllers.ExceptionFilterResult+<ExecuteAsync>d__0.MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder<TResult>.Start<TStateMachine>(TStateMachine&)
at System.Web.Http.Controllers.ExceptionFilterResult.ExecuteAsync(System.Threading.CancellationToken)
at System.Web.Http.ApiController.ExecuteAsync(System.Web.Http.Controllers.HttpControllerContext, System.Threading.CancellationToken)
at System.Web.Http.Dispatcher.HttpControllerDispatcher+<SendAsync>d__1.MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder<TResult>.Start<TStateMachine>(TStateMachine&)
at System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
at System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
at System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
at System.Net.Http.DelegatingHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
at Symantec.SoftwarePortal.Api.Controllers.Extensions.ApiControllerAntiForgeryHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
at System.Net.Http.DelegatingHandler.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
at System.Web.Http.HttpServer+<SendAsync>d__0.MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder<TResult>.Start<TStateMachine>(TStateMachine&)
at System.Web.Http.HttpServer.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
at System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage, System.Threading.CancellationToken)
at System.Web.Http.WebHost.HttpControllerHandler+<ProcessRequestAsyncCore>d__0.MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<TStateMachine>(TStateMachine&)
at System.Web.Http.WebHost.HttpControllerHandler.ProcessRequestAsyncCore(System.Web.HttpContextBase)
at System.Web.TaskAsyncHelper.BeginTask(System.Func<System.Threading.Tasks.Task>, AsyncCallback, Object)
at System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStepImpl(System.Web.HttpApplication+IExecutionStep)
at System.Web.HttpApplication.ExecuteStep(System.Web.HttpApplication+IExecutionStep, Boolean&)
at System.Web.HttpApplication+PipelineStepManager.ResumeSteps(Exception)
at System.Web.HttpApplication.BeginProcessRequestNotification(System.Web.HttpContext, AsyncCallback)
at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(System.Web.Hosting.IIS7WorkerRequest, System.Web.HttpContext)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)
at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr, System.Web.RequestNotificationStatus&)
at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr, System.Web.RequestNotificationStatus&)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32)

User [domain\administrator], Auth [domain\tmanager2], AppDomain [/LM/W3SVC/1/ROOT/Altiris/SoftwarePortal/Api-7-132681618271383073]

HTTP [POST]: http://smp85-01.domain.com/altiris/softwareportal/api/softwarerequests
ip: [10.255.10.38]; languages: [en-US]; content-length: [118];
timings: [[R] 00:00:00.1405991(W: 00:00:00)];
response: [200 OK]; x-smp-nsversion: [8.6.1119.0];
","Symantec.SoftwarePortal.Api.Controllers.ApiControllerExceptionHandler.OnException","Symantec.SoftwarePortal.Api.dll","529","Errors"

Cause

Known issue. LDAP search logic needed some adjustments.

Environment

ITMS 8.6, 8.6 RU1

Resolution

This issue has been reported to the Broadcom Development team. A fix for this has been added to ITMS 8.6 RU2.

A pointfix for those customers with ITMS 8.6 RU1 can be found under:

221269 "CUMULATIVE POST ITMS 8.6 RU1 POINT FIXES"