title: Calling Reporting Services API from SharePoint 2013 application page
body: <p>While upgrading from SharePoint 2010 to 2013 I am facing the following problem.  </p>
  
  <p>I have an application page, from which an SSRS API call is made to get all subscriptions for a report.  </p>
  
  <pre><code>ReportingService2010 rs = new ReportingService2010();
  rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
  rs.Url = serverUrl + "/_vti_bin/ReportServer/ReportService2010.asmx";
  try
  {
      return rs.ListSubscriptions(reportUrl);
  }
  catch (SoapException ex)
  { }
  </code></pre>
  
  <p>During the execution of this code I get an UnauthorizedAccessException with stacktrace</p>
  
  <pre><code>System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)), StackTrace:    at Microsoft.SharePoint.SPWeb.GetObjectForUrl(String strUrl, Guid&amp; listId)     at Microsoft.ReportingServices.SharePoint.Objects.RSSPImpWeb.GetObject(String strUrl)     at Microsoft.ReportingServices.SharePoint.Server.Utility.GetSPItemMetaDataAndContent(ItemSpecifier itemSpecifier, UserContext userContext, Boolean returnContent, Boolean wrapFileNotFoundOnOpenWeb, Byte[]&amp; content)     at Microsoft.ReportingServices.SharePoint.Server.Utility.GetSharePointItem(ExternalItemPath objectName, UserContext userContext)     at Microsoft.ReportingServices.SharePoint.Server.SharePointDBInterface.GetItemTypeAndId(ExternalItemPath objectName, ItemType&amp; type, Guid&amp; id)     at Micros... 0f35fa9b-1c67-c0b8-f616-d4cac96f7408
  ...oft.ReportingServices.SharePoint.Server.SharePointDBInterface.ObjectExists(ExternalItemPath objectName, ItemType&amp; type, Guid&amp; id, Int32&amp; snapshotLimit, Byte[]&amp; secDesc, Int32&amp; execOptions, Guid&amp; snapshotId, Guid&amp; linkID)     at Microsoft.ReportingServices.Library.GetItemTypeAction.PerformActionNow()     at Microsoft.ReportingServices.Library.RSSoapAction`1.Execute()     at Microsoft.ReportingServices.Library.ReportingService2010Impl.GetItemType(String itemPath, Boolean fromStore, String parameterName, Boolean allowEditSessionSyntax)     at Microsoft.ReportingServices.Library.ReportingService2010Impl.ListSubscriptions(String ItemPathOrSiteURL, String Owner, SubscriptionImpl[]&amp; SubscriptionItems)     at Microsoft.ReportingServices.ServiceRuntime.ReportServiceManagement.&lt;&gt;c__DisplayClass5b.&lt;L...  0f35fa9b-1c67-c0b8-f616-d4cac96f7408
  ...istSubscriptions&gt;b__5a()     at Microsoft.ReportingServices.ServiceRuntime.ReportServiceBase.ExecuteWithContext[TResult](Func`1 action)     at Microsoft.ReportingServices.ServiceRuntime.ReportServiceManagement.ListSubscriptions(String ItemPathOrSiteURL)     at SyncInvokeListSubscriptions(Object , Object[] , Object[] )     at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]&amp; outputs)     at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&amp; rpc)     at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc&amp; rpc)     at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc&amp; rpc)     at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationCon...  0f35fa9b-1c67-c0b8-f616-d4cac96f7408
  ...textSet)     at System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(RequestContext request, Boolean cleanThread, OperationContext currentOperationContext)     at System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(RequestContext request, OperationContext currentOperationContext)     at System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(IAsyncResult result)     at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)     at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)     at System.ServiceModel.Channels.SecurityChannelListener`1.ReceiveItemAndVerifySecurityAsyncResult`2.InnerTryReceiveCompletedCallback(IAsyncResult result)     at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)     at Sy...  0f35fa9b-1c67-c0b8-f616-d4cac96f7408
  ...stem.Runtime.AsyncResult.Complete(Boolean completedSynchronously)     at System.Runtime.InputQueue`1.AsyncQueueReader.Set(Item item)     at System.Runtime.InputQueue`1.EnqueueAndDispatch(Item item, Boolean canDispatchOnThisThread)     at System.Runtime.InputQueue`1.EnqueueAndDispatch(T item, Action dequeuedCallback, Boolean canDispatchOnThisThread)     at System.ServiceModel.Channels.SingletonChannelAcceptor`3.Enqueue(QueueItemType item, Action dequeuedCallback, Boolean canDispatchOnThisThread)     at System.ServiceModel.Channels.HttpPipeline.EnqueueMessageAsyncResult.CompleteParseAndEnqueue(IAsyncResult result)     at System.ServiceModel.Channels.HttpPipeline.EnqueueMessageAsyncResult.HandleParseIncomingMessage(IAsyncResult result)     at System.Runtime.AsyncResult.SyncContinue(IAsyncResu...  0f35fa9b-1c67-c0b8-f616-d4cac96f7408
  ...lt result)     at System.ServiceModel.Channels.HttpPipeline.EmptyHttpPipeline.BeginProcessInboundRequest(ReplyChannelAcceptor replyChannelAcceptor, Action dequeuedCallback, AsyncCallback callback, Object state)     at System.ServiceModel.Channels.HttpChannelListener`1.HttpContextReceivedAsyncResult`1.ProcessHttpContextAsync()     at System.ServiceModel.Channels.HttpChannelListener`1.BeginHttpContextReceived(HttpRequestContext context, Action acceptorCallback, AsyncCallback callback, Object state)     at System.ServiceModel.Activation.HostedHttpTransportManager.HttpContextReceived(HostedHttpRequestAsyncResult result)     at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.HandleRequest()     at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest()     at Syst...  0f35fa9b-1c67-c0b8-f616-d4cac96f7408
  ...em.ServiceModel.Activation.HostedHttpRequestAsyncResult.OnBeginRequest(Object state)     at System.ServiceModel.AspNetPartialTrustHelpers.PartialTrustInvoke(ContextCallback callback, Object state)     at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.OnBeginRequestWithFlow(Object state)     at System.Runtime.IOThreadScheduler.ScheduledOverlapped.IOCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)     at System.Runtime.Fx.IOCompletionThunk.UnhandledExceptionFrame(UInt32 error, UInt32 bytesRead, NativeOverlapped* nativeOverlapped)     at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)   0f35fa9b-1c67-c0b8-f616-d4cac96f7408
  Throwing Microsoft.ReportingServices.Diagnostics.Utilities.AccessDeniedException: , Microsoft.ReportingServices.Diagnostics.Utilities.AccessDeniedException: The permissions granted to user 'NT AUTHORITY\ANONYMOUS LOGON' are insufficient for performing this operation.;    0f35fa9b-1c67-c0b8-f616-d4cac96f7408
  </code></pre>
  
  <p>The described behavior is similar for both SP 2010 and SP 2013. In SharePoint 2010 changing the ASP.NET impersonation account from default to an identity with sufficient permissions on hosted web application would solve the issue.<br>
  Unfortunately, doing that on SP 2013 Farm causes another exception of type SOAPException</p>
  
  <pre><code>System.Web.Services.Protocols.SoapException: Server was unable to process request. ---&gt; The security token request cannot be completed.    at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)     at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
  </code></pre>
  
  <p>I've tried to change the identity of Anonymous Authentication but got the same exception. I've done a lot of debugging and read tons of logs and I am out of clues on how to solve this problem.<br>
  Can anyone suggest anything?  </p>
  
  <p>Here is some additional information that might help:<br>
  Web application is configured for FBA and uses LDAP provider for authentication.  </p>
  
  <p>Thanks.</p>