You have noticed an issue where if a specific User tries to access the Software Portal, it fails:
A problem occurred while loading the Software Portal. Contact IT Helpdesk for assistance.
If a different User tries to open the Software Portal from the same computer, it opens fine.
If the affected User tries from a different computer, fails too.
This is what the Agent logs shows when the affected User is trying to access the Software Portal:
Open Software Portal URL (https://smpserver.example.com/Altiris/SoftwarePortal/UserPortal/default.aspx?MachineGuid={93E227F2-8353-4A1A-9E2A-81F7B0A0F1A0}&MachineName=COMPUTER123&Platform=Win64) in Web browser...
-----------------------------------------------------------------------------------------------------
Process: rundll32.exe (17848), Thread ID: 16620, Module: SOFTWA~1.DLL
Priority: 4, Source: Software Management Plug-in
It shows that the call was properly made and no is related to a failure caused by the Computer.
Here is what the NS logs shows when the Software Portal request is made, which failed:
MainController failure.
Value should be shorter than 256 chars
Parameter name: value
[ArgumentException @ Altiris.NS.dll]
at Altiris.NS.ResourceManagement.ResourceKey.ValidateValue(string, string)
at Altiris.SoftwarePortal.Resources.PortalUserResource.FindExistingUser(string, string, DirectoryEntry, CodeProfiler)
at Altiris.SoftwarePortal.Resources.PortalUserResource.GetPortalUser(string, string, DirectoryEntry)
at Altiris.SoftwarePortal.Resources.PortalUserResource.PortalUserResourceFromAccount(UserAccount)
at Altiris.SoftwarePortal.Resources.PortalUserResource.GetUser(string)
at Altiris.SoftwarePortal.Engine.UserContextCache.CreatePortalUser(string)
at Altiris.SoftwarePortal.Engine.UserContextCache.AddUserToCache(string)
at Altiris.SoftwarePortal.Engine.UserContextCache.GetPortalUser(string)
at Symantec.SoftwarePortal.Api.Helpers.PortalUserHelper+<>c_DisplayClass2_0.<GetCurrentPortalUser>b_0()
at Altiris.NS.Security.SecurityContext+<>c_DisplayClass33_0.<ExecuteAsAppIdentity>b_1(SecurityContext)
at Altiris.NS.Security.SecurityContext.ExecuteAs<T,TK>(EExecuteAs, TK, Func<TK,SecurityContext>, Func<SecurityContext,T>)
at Symantec.SoftwarePortal.Api.Helpers.PortalUserHelper.GetCurrentPortalUser(bool, bool, bool)
at Symantec.SoftwarePortal.Api.Controllers.MainController.GetPortalUser()
at .lambda_method(Closure, object, object[])
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor+ActionExecutor+<>c_DisplayClass6_2.<GetExecutor>b_2(object, object[])
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext, IDictionary<string,object>, CancellationToken)
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task)
at System.Web.Http.Controllers.ApiControllerActionInvoker+<InvokeActionAsyncCore>d__1.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task)
at System.Web.Http.Controllers.ActionFilterResult+<ExecuteAsync>d__5.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task)
at System.Web.Http.Controllers.ExceptionFilterResult+<ExecuteAsync>d__6.MoveNext()
Exception logged from:
at Altiris.Diagnostics.Logging.EventLog.ReportException(int, string, string, Exception, string)
at Symantec.SoftwarePortal.Api.Controllers.ApiControllerExceptionHandler.OnException(HttpActionExecutedContext)
at System.Web.Http.Filters.ExceptionFilterAttribute.OnExceptionAsync(HttpActionExecutedContext, CancellationToken)
at System.Web.Http.Filters.ExceptionFilterAttribute+<ExecuteExceptionFilterAsyncCore>d__3.MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<TStateMachine>(ref TStateMachine)
at System.Web.Http.Filters.ExceptionFilterAttribute.ExecuteExceptionFilterAsyncCore(HttpActionExecutedContext, CancellationToken)
at System.Web.Http.Filters.ExceptionFilterAttribute.System.Web.Http.Filters.IExceptionFilter.ExecuteExceptionFilterAsync(HttpActionExecutedContext, CancellationToken)
at System.Web.Http.Controllers.ExceptionFilterResult+<ExecuteAsync>d__6.MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder<>.Start<TStateMachine>(ref TStateMachine)
at System.Web.Http.Controllers.ExceptionFilterResult.ExecuteAsync(CancellationToken)
at System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext, CancellationToken)
at System.Web.Http.Dispatcher.HttpControllerDispatcher+<SendAsync>d__15.MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder<>.Start<TStateMachine>(ref TStateMachine)
at System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(HttpRequestMessage, CancellationToken)
at System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage, CancellationToken)
at System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(HttpRequestMessage, CancellationToken)
at System.Net.Http.DelegatingHandler.SendAsync(HttpRequestMessage, CancellationToken)
at Symantec.SoftwarePortal.Api.Controllers.Extensions.ApiControllerAntiForgeryHandler.SendAsync(HttpRequestMessage, CancellationToken)
at System.Net.Http.DelegatingHandler.SendAsync(HttpRequestMessage, CancellationToken)
at System.Web.Http.HttpServer+<SendAsync>d__24.MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder<>.Start<TStateMachine>(ref TStateMachine)
at System.Web.Http.HttpServer.SendAsync(HttpRequestMessage, CancellationToken)
at System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage, CancellationToken)
at System.Web.Http.WebHost.HttpControllerHandler+<ProcessRequestAsyncCore>d__12.MoveNext()
at System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<TStateMachine>(ref TStateMachine)
at System.Web.Http.WebHost.HttpControllerHandler.ProcessRequestAsyncCore(HttpContextBase)
at System.Web.TaskAsyncHelper.BeginTask(Func<Task>, AsyncCallback, object)
at System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep)
at System.Web.HttpApplication.ExecuteStep(IExecutionStep, ref bool)
at System.Web.HttpApplication+PipelineStepManager.ResumeSteps(Exception)
at System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext, AsyncCallback)
at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest, HttpContext)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, int)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, int)
at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr, ref RequestNotificationStatus)
at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr, ref RequestNotificationStatus)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, int)
at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, int)
HTTP [GET]: *https://smpsserver.example.com/altiris/softwareportal/api/portaluser*
ip: [172.0.xx.xx]; languages: [es,es-ES;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6];
timings: [[R] 00:00:00.0156275(W: 00:00:00)];
response: [200 OK]; x-smp-nsversion: [8.7.3391.0];
-----------------------------------------------------------------------------------------------------
Process: w3wp (6232), Thread ID: 1046, Module: Altiris.NS.dll
Priority: 1, Source: ResourceKey.ValidateValue
ITMS 8.7.x
Known issue. Unable to handle very long display names and inclusion in deep OU hierarchy tree in AD.
This affected User resided in a very deep OU structure/hierarchy. More than 256 characters OU path:
DistinguishedName : CN=Doe John,OU=Prevented Deletion from Assets,OU=Risk Management and Compliance,OU=Risk Management, Technique and Policy Compliance Management,OU=General Directory,OU=Main Company Groups,DC=example,DC=com
This issue has been resolved. Currently a fix for this has been included in our ITMS 8.7.3 release.
Workaround:
Move the affected User to a shorter OU hierarchy/structure, so it will not exceed 256 characters.