CosmosDb ExpressionVisitor (SubtreeEvaluator) schlägt in Azure fehl, funktioniert auf dem lokalen ComputerC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 CosmosDb ExpressionVisitor (SubtreeEvaluator) schlägt in Azure fehl, funktioniert auf dem lokalen Computer

Post by Anonymous »

Seit einigen Tagen schlägt Code, der immer funktioniert hat, in Azure mit der Ausnahme „NotSupportedException: Die angegebene Methode wird nicht unterstützt.“ fehl. Diese Ausnahme tritt beim Erstellen der Abfragezeichenfolge auf.
Es scheint nicht mehr zu wissen, wie man eine Abfragezeichenfolge für „Contains“ erstellt:
Ich habe ein IQueryable q zum Erstellen einer CosmosDb-Abfrage. Es schlägt fehl, wenn das IQueryable eine Filterbedingung „Enthält“ hat:

Code: Select all

q = q.Where(r => evt.Contains(r.QEvent));
Es schlägt fehl am

Code: Select all

var queryString = query.ToQueryDefinition();
Dieser Ausdruck besucht den IQueryable-Baum und konvertiert ihn in eine Abfragezeichenfolge (QueryDefinition).
Das Seltsame ist, dass es immer funktioniert hat und immer noch auf meinem Entwicklungscomputer funktioniert, nur nicht mehr auf Azure. Es sollte so etwas wie
generieren

Code: Select all

WHERE (root["QEvent"] IN ("a", "b"))
Eine alte Version funktioniert immer noch, also muss es etwas mit dem Azure Build zu tun haben, aber ich weiß überhaupt nicht, wo ich suchen soll.
Ich verwende natürlich in beiden Umgebungen dasselbe Microsoft.Azure.Cosmos-Paket.
Dies ist der erste Teil des Stacktrace (die Abfrage hat einige weitere Filter, daher ist der Stacktrace ziemlich umfangreich):

Code: Select all

System.NotSupportedException:  Specified method is not supported.
at System.Reflection.RuntimeMethodInfo.ThrowNoInvokeException()
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at Microsoft.Azure.Cosmos.Linq.SubtreeEvaluator.EvaluateConstant(Expression expression)
at Microsoft.Azure.Cosmos.Linq.SubtreeEvaluator.Visit(Expression expression)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
at System.Linq.Expressions.ExpressionVisitor.VisitBinary(BinaryExpression node)
at System.Linq.Expressions.BinaryExpression.Accept(ExpressionVisitor visitor)
at System.Linq.Expressions.ExpressionVisitor.VisitBinary(BinaryExpression node)
at System.Linq.Expressions.BinaryExpression.Accept(ExpressionVisitor visitor)
at Microsoft.Azure.Cosmos.Linq.SubtreeEvaluator.Visit(Expression expression)
at System.Linq.Expressions.ExpressionVisitor.VisitLambda[T](Expression`1 node)
at System.Linq.Expressions.Expression`1.Accept(ExpressionVisitor visitor)
at Microsoft.Azure.Cosmos.Linq.SubtreeEvaluator.Visit(Expression expression)
at System.Linq.Expressions.ExpressionVisitor.VisitUnary(UnaryExpression node)
at System.Linq.Expressions.UnaryExpression.Accept(ExpressionVisitor visitor)
at Microsoft.Azure.Cosmos.Linq.SubtreeEvaluator.Visit(Expression expression)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
at Microsoft.Azure.Cosmos.Linq.SubtreeEvaluator.Visit(Expression expression)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
at Microsoft.Azure.Cosmos.Linq.SubtreeEvaluator.Visit(Expression expression)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
at Microsoft.Azure.Cosmos.Linq.SubtreeEvaluator.Visit(Expression expression)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
at Microsoft.Azure.Cosmos.Linq.SubtreeEvaluator.Visit(Expression expression)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
at Microsoft.Azure.Cosmos.Linq.SubtreeEvaluator.Visit(Expression expression)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
at Microsoft.Azure.Cosmos.Linq.SubtreeEvaluator.Visit(Expression expression)
at System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor visitor, IArgumentProvider nodes)
at System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node)
at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
at Microsoft.Azure.Cosmos.Linq.ConstantEvaluator.PartialEval(Expression expression, Func`2 fnCanBeEvaluated)
at Microsoft.Azure.Cosmos.Linq.ConstantEvaluator.PartialEval(Expression expression)
at Microsoft.Azure.Cosmos.Linq.SqlTranslator.TranslateQuery(Expression inputExpression, CosmosLinqSerializerOptionsInternal linqSerializerOptions, IDictionary`2 parameters)
at Microsoft.Azure.Cosmos.Linq.DocumentQueryEvaluator.Evaluate(Expression expression, CosmosLinqSerializerOptionsInternal linqSerializerOptions,  IDictionary`2 parameters)
at Microsoft.Azure.Cosmos.Linq.CosmosLinqExtensions.ToQueryDefinition[T](IQueryable`1 query)
[...]

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post