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:
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\manager2], AppDomain [/LM/W3SVC/1/ROOT/Altiris/SoftwarePortal/Api-7-132681618271383073]
HTTP [POST]: http://smp85-01.domain.com/altiris/softwareportal/api/softwarerequests
ip: [10.0.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"
ITMS 8.6, 8.6 RU1
Known issue. LDAP search logic needed some adjustments.
A fix for this has been added to ITMS 8.6 RU2 release.
A pointfix for those customers with ITMS 8.6 RU1 can be found under:
221269 "CUMULATIVE POST ITMS 8.6 RU1 POINT FIXES"