0

Je crée une nouvelle application Xamarin Forms et j'utilise une application mobile Azure connectée à une base de données SQL Azure.Comportement starnge Linq et SQL Azure

Voici un code que j'ai écrit pour interroger une table:

IEnumerable<Club> clubs = await (from club in ClubManager.DefaultManager.ClubTable.CreateQuery() 
          where club.Nom.Contains(TexteRecherche) 
          select club).ToEnumerableAsync(); 

je reçois au hasard l'exception suivante:

The exception 
Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException occurred 
    HResult=0x80131509 
    Message=The request could not be completed. (Bad Request)  
    Source = <Unable to evaluate the source of the exception> 
    Procedural Call Tree: 
    à Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.<ThrowInvalidResponse>d__24.MoveNext() 
    à System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    à System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    à Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.<SendRequestAsync>d__26.MoveNext() 
    à System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    à System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    à Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.<RequestAsync>d__18.MoveNext() 
    à System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    à System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    à Microsoft.WindowsAzure.MobileServices.MobileServiceTable.<ReadAsync>d__20.MoveNext() 
    à System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    à System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    à Microsoft.WindowsAzure.MobileServices.MobileServiceTable.<ReadAsync>d__18.MoveNext() 
    à System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    à System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    à Microsoft.WindowsAzure.MobileServices.Query.MobileServiceTableQueryProvider.<Execute>d__8`1.MoveNext() 
    à System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    à System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    à Microsoft.WindowsAzure.MobileServices.Query.MobileServiceTableQueryProvider.<Execute>d__7`1.MoveNext() 
    à System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    à System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    à System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 
    à EagleGolf.CourseEditor.ViewModels.MainPageViewModel.<LitClubs>d__23.MoveNext() dans D:\Julien\MobileApps\EagleGolf.CourseEditor\EagleGolf.CourseEditor\EagleGolf.CourseEditor\ViewModels\MainPageViewModel.cs :ligne 107 
build : ` 

Il est très étrange parce que je ferme et recommencer l'application et il fonctionne encore. Il peut travailler 2-3 fois, puis arrêter de travailler, puis travailler à nouveau.

Ma base de données contient seulement 1 table et ce tableau ne contient que 2 enregistrements ...

+0

ce que vous utilisez pour votre accès aux données , vous devez le configurer pour être plus résilient aux problèmes de connectivité des données lors de l'utilisation de SQLAzure. Par exemple, avec Entity Framework, il existe une configuration de stratégie d'exécution spécifique pour SQLAzure: https://msdn.microsoft.com/en-us/library/dn456835(v=vs.113).aspx Pour d'autres options de récupération de données, vous aurez besoin de prendre des mesures similaires/w SQL Azure. –

Répondre

0
IEnumerable<Club> clubs = await (from club in ClubManager.DefaultManager.ClubTable.CreateQuery() 
         where club.Nom.Contains(TexteRecherche) 
         select club).ToEnumerableAsync(); 

Pour IMobileServiceTable table, la requête ci-dessus enverra la requête suivante contre votre backend mobile app:

Get https://{your-app-name}.azurewebsites.net/tables/{table-name}?$filter=substringof('{TexteRecherche}',Nom) 

Message = La requête n'a pas pu aboutir. (Bad Request)

Je suppose que vous pourriez tirer parti Fiddler et vérifier avec votre code lors de l'appel des requêtes connexes, comme suit:

Selon

enter image description here