2017-01-05 1 views
1

Ich habe eine Azure-Funktion, die für die Verbindung mit einem Azure AD und das Abrufen einiger Azure AD-Informationen zuständig ist.Azure-Funktionen: C# -Kompilierungsfehler mit System.Linq.Expressions

Wenn ich die .Expand() Eigenschaft auf den .Users verwenden, erhalte ich die folgenden Kompilierungsfehler:

activeDirectoryClient.Users.Expand(x => x.MemberOf).ExecuteAsync().Result; 

    (38,17): error CS0012: The type 'Expression<>' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Linq.Expressions 

ich den Namespace korrekt hinzugefügt habe, und auch versucht, es in der project.json hinzuzufügen:

{ 
"frameworks": { 
"net46":{ 
    "dependencies": { 
    "Microsoft.IdentityModel.Clients.ActiveDirectory": "3.13.5", 
    "Microsoft.Azure.ActiveDirectory.GraphClient": "2.1.0", 
    "System.Linq": "4.0.0", 
    "System.Linq.Expressions": "4.0.0" 
    } 
    } 
} 
} 

Gibt es bekannte Probleme mit Linq.Expressions in Azure-Funktionen Lösung mit C#?

Antwort

0

Es gibt keine Probleme mit Linq.Expressions in Azure-Funktionen.

Arbeitsbeispiel von HttpTriggerCSSharp mit Linq.Expression:

project.json

{ 
"frameworks": { 
"net46":{ 
    "dependencies": { 
    "Microsoft.IdentityModel.Clients.ActiveDirectory": "3.13.5", 
    "Microsoft.Azure.ActiveDirectory.GraphClient": "2.1.0" 
    } 
    } 
} 
} 

run.csx

#r "System.Linq.Expressions" 

using System.Net; 
using Microsoft.Azure.ActiveDirectory.GraphClient; 
using Microsoft.IdentityModel.Clients.ActiveDirectory; 

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log) 
{ 
    log.Info("C# HTTP trigger function processed a request."); 

    ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(new Uri("https://graph.windows.net/" + "testdomain"), 
                       async() => await AcquireTokenAsyncForApplication()); 
    IUser user = activeDirectoryClient.Users.Where(u => u.UserPrincipalName == "[email protected]").ExecuteSingleAsync().Result; 

    return req.CreateResponse(HttpStatusCode.OK, "Hello"); 

} 

public static async Task<string> AcquireTokenAsyncForApplication() 
{ 
    return "test"; 
} 
+0

Hallo Alexey, Vielen Dank für die schnelle Antwort. Ich habe die gleichen using Klauseln und die gleichen project.son Einträge. var activeDirectoryClient = neuer ActiveDirectoryClient (neuer Uri ("https://graph.windows.net/" + aadTenantName), async() => {return await GetAccessToken (aadTenantName, clientID, clientSecret);}); var users = activeDirectoryClient.Users.Expand (x => x.MemberOf) .ExecuteAsync(). Ergebnis; // Dies gibt mir einen Kompilierungsfehler // var users = activeDirectoryClient.Users.ExecuteAsync(). Ergebnis; Dies wird korrekt kompiliert. – Jens

+0

Hallo Jens. Ich habe meine Antwort bearbeitet. Versuchen Sie, "System.Linq. *" - Abhängigkeiten von project.json zu entfernen und # r "System.Linq.Expressions" in run.csx hinzuzufügen. Dieser Code kompiliert für mich ohne Fehler. –

+0

Hallo Alexey. Tatsächlich funktioniert das richtig. Danke, dass du mir dabei geholfen hast. Ich verstehe jedoch nicht, was mit meinem anfänglichen Denken falsch war :-) – Jens

Verwandte Themen