none
Lambda Expression Error when trying to set Discovery Client RRS feed

  • Question

  • Does anyone know why I get the error of...

    Cannot convert async lambda expression to delegate type 'Func<string>'. An async lambda expression may return void, Task or Task<T>, none of which are convertible to 'Func<string>'

    on the bold section of the code below?  It is pretty much a cut and past so not sure what to do.

     internal static async Task<SharePointClient> EnsureSPClientCreatedAsync(string capabilityName)
            {
                var signInUserId = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value;
                var userObjectId = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
                AuthenticationContext authContext = new AuthenticationContext(_authority);

                try
                {
                    DiscoveryClient discClient = new DiscoveryClient(_discoverySvcEndpointUri, 
                        async () =>
                        {
                            var authResult = await authContext.AcquireTokenSilentAsync(_discoverySvcResourceId, 
                                                                                        new ClientCredential(_clientId, _clientSecret), 
                                                                                        new UserIdentifier(userObjectId, 
                                                                                        UserIdentifierType.UniqueId));
                            return authResult.AccessToken;
                        });

                    var dcr = await discClient.DiscoverCapabilityAsync(capabilityName);

                    return new SharePointClient(dcr.ServiceEndpointUri,
                        async () =>
                        {
                            var authResult = await authContext.AcquireTokenSilentAsync(_discoverySvcResourceId,
                                                                                       new ClientCredential(_clientId,
                                                                                                            _clientSecret),
                                                                                       new UserIdentifier(userObjectId,
                                                                                                          UserIdentifierType.UniqueId));

                            return authResult.AccessToken;
                        });

                }
                catch (AdalException exception)
                {
                    if (exception.ErrorCode == AdalError.FailedToAcquireTokenSilently)
                    {
                        authContext.TokenCache.Clear();
                        throw exception;
                    }
                    return null;
                }
            }

    Wednesday, September 23, 2015 4:35 AM

Answers