"Application access denied" error while uploading media


Description

The default role sitecore/Sitecore Client Authoring, and hence sitecore/Author, does not have read access to the /sitecore/content/Applications/Dialogs/Upload item in the Core database required for Classic Upload dialog. The following exception occurs while trying to upload media through the Classic Upload dialog under an unauthorized user:

[AccessDeniedException: Application access denied.]
   Sitecore.Diagnostics.Assert.HasAccess(Boolean accessAllowed, String message) +114
   Sitecore.Diagnostics.Assert.CanRunApplication(String application) +92
   Sitecore.Shell.Applications.Dialogs.Attach.AttachForm.OnLoad(EventArgs e) +53
[TargetInvocationException: Exception has been thrown by the target of an invocation.]
   System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) +0
   System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) +128
   System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) +146
   System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) +34
   Sitecore.Reflection.ReflectionUtil.InvokeMethod(MethodInfo method, Object[] parameters, Object obj) +130
   Sitecore.Reflection.ReflectionUtil.CallMethod(Type type, Object obj, String methodName, Boolean includeNonPublic, Boolean includeInherited, Boolean includeStatic, Object[] parameters) +261
   Sitecore.Reflection.ReflectionUtil.CallMethod(Type type, Object obj, String methodName, Boolean includeNonPublic, Boolean includeInherited, Object[] parameters) +113
   Sitecore.Reflection.ReflectionUtil.CallMethod(Object obj, String methodName, Boolean includeNonPublic, Boolean includeInherited, Object[] parameters) +124
   Sitecore.Web.UI.Sheer.ClientPage.OnLoad(EventArgs e) +424
   Sitecore.Shell.Web.UI.SecurePage.OnLoad(EventArgs e) +63
   Sitecore.Shell.Applications.Dialogs.Attach.AttachPage2.OnLoad(EventArgs e) +44
   System.Web.UI.Control.LoadRecursive() +216
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4004

Solution

To resolve the issue, make the user a member of the sitecore/Sitecore Client Authoring role:
  1. Switch to the Core database in the Desktop.
  2. Open the Content Editor and navigate to the sitecore/content/Applications/Dialogs/Upload item.
  3. Click the Security tab and grant sitecore/Sitecore Client Authoring role Read access to the opened item.