2013-06-04 19 views
5

Jest to metoda, z której korzystam.Wyjątek MobileServiceInvalidOperationException podczas próby odzyskania danych z platformy Azure

try 
{ 
    List<Patient> pList = await App.MobileService.GetTable<Patient>().Where(
       patient => patient.id == 1).ToListAsync(); 
    foreach (Patient p in pList) 
    { 
     System.Diagnostics.Debug.WriteLine("{0}, {1}", p.id, p.first_name); 
    } 
} 
catch (Exception err) 
{ 
    System.Diagnostics.Debug.WriteLine("ERROR! : {0}", err.Message); 
} 

Oto jednostka Pacjenta.

class Patient 
{ 
    public int id { get; set; } 
    public string first_name { get; set; } 
    public string last_name { get; set; } 
    public string middle_name { get; set; } 
    public string nirc { get; set; } 
    public int bed_id { get; set; } 
} 

Oto błąd, który otrzymuję.

An exception of type 'System.Net.WebException' occurred in System.Windows.ni.dll and  wasn't handled before a managed/native boundary 
An exception of type 'System.Net.WebException' occurred in System.Windows.ni.dll and wasn't handled before a managed/native boundary 
An exception of type 'System.Net.WebException' occurred in mscorlib.ni.dll and wasn't handled before a managed/native boundary 
An exception of type 'Newtonsoft.Json.JsonReaderException' occurred in Newtonsoft.Json.DLL and wasn't handled before a managed/native boundary 
An exception of type 'Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException' occurred in Microsoft.Azure.Zumo.WindowsPhone8.Managed.DLL and wasn't handled before a managed/native boundary 
An exception of type 'Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException' occurred in mscorlib.ni.dll and wasn't handled before a managed/native boundary 
An exception of type 'Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException' occurred in mscorlib.ni.dll and wasn't handled before a managed/native boundary 
An exception of type 'Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException' occurred in mscorlib.ni.dll and wasn't handled before a managed/native boundary 
A first chance exception of type 'Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException' occurred in mscorlib.ni.dll 
An exception of type 'Microsoft.WindowsAzure.MobileServices.MobileServiceInvalidOperationException' occurred in mscorlib.ni.dll and wasn't handled before a managed/native boundary 

Kiedy mogę zawinąć moja metoda obrębie TryCatch, i ten komunikat

Error : The request could not be completed. () 

oto komunikat o błędzie stos

at Microsoft.WindowsAzure.MobileServices.MobileServiceClient.CreateMobileServiceException(String errorMessage, IServiceFilterRequest request, IServiceFilterResponse response) 
    at Microsoft.WindowsAzure.MobileServices.MobileServiceClient.ThrowInvalidResponse(IServiceFilterRequest request, IServiceFilterResponse response, JToken body) 
    at Microsoft.WindowsAzure.MobileServices.MobileServiceClient.<RequestAsync>d__f.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 
    at Microsoft.WindowsAzure.MobileServices.MobileServiceTable.<SendReadAsync>d__0.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 
    at Microsoft.WindowsAzure.MobileServices.MobileServiceTable`1.<EvaluateQueryAsync>d__3`1.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 
    at Microsoft.WindowsAzure.MobileServices.MobileServiceTableQuery`1.<ToListAsync>d__2.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 
    at PhoneApp1.MainPage.<populate>d__0.MoveNext() 

kilka punktów, aby pamiętać.

  1. Pozwolenie jest ustawiony na Anybody with the Application Key
  2. Dodałem odniesienia do Windows Azure Mobile Services Managed Client
  3. Ja już wstawiony ten kod w ciągu App.XAML.CS. using Microsoft.WindowsAzure.MobileServices;
  4. Umieściłem już ten fragment kodu nabytego na stronie this w App.XAML.CS.
    public static MobileServiceClient MobileService = new MobileServiceClient(AppUrl, AppKey);

Dlaczego nie mogę połączyć się z bazą danych? Próbowałem już uruchomić te kody w aplikacji Windows Store i działało. Wcześniej zrobiłem dokładnie to samo i to też zadziałało.

Odpowiedz

3

This link mnie uratował.

Podobno wszystko, co musiałem zrobić, to zmienić adres usługi z https na http. Więc zamiast tego

public static MobileServiceClient MobileService = new MobileServiceClient( 
    "https://www.example.azure-mobile.net/", 
    "fjkdslajkfdlsref31321fgdsat34ajklfdslajfkldsa" 
); 

go zmienić na

public static MobileServiceClient MobileService = new MobileServiceClient( 
    "http://www.example.azure-mobile.net/", 
    "fjkdslajkfdlsref31321fgdsat34ajklfdslajfkldsa" 
); 

Problem rozwiązany.

+2

To nie rozwiązuje problemu, działa wokół niego. To wyłącza HTTPS, co oznacza, że ​​twoje dane są teraz wysyłane w postaci czystego tekstu - prawdopodobnie nie jest to dobre. W moim przypadku data/czas były nieprawidłowe na urządzeniu, które spowodowało awarię HTTPS. –

0

Nie mogę skomentować z powodu mojej niskiej reputacji, doświadczam tego samego problemu, ale jest niespójny.

Jeśli spróbuję użyć strony rejestracyjnej w mojej aplikacji, która uderza w usługę Azure Mobile, czasami kończy się to z tym samym błędem ("Nie można ukończyć żądania."), Jeśli spróbuję ponownie od razu to działa dobrze.

Używam rzeczywistego urządzenia z systemem Windows Phone i jest on podłączony za pomocą Wi-Fi dostarczanego przez hotspot mojego telefonu iPhone, który jest w rzeczywistości 4G, więc nie ma problemu z połączeniem.

Czytam inne artykuły, które mówiły, że nie ma sensu sprawdzać, czy połączenie internetowe jest dostępne, po prostu spróbuj wysłać dane i rozwiązać wszelkie problemy. Zajmuję się tą kwestią, ale problem nie powinien się wydarzyć.

Czy wystąpiły więcej problemów?

Próbowałem już korzystać z https i http dla połączenia MobileService, nie wydaje się, żeby to miało jakikolwiek wpływ.

+0

Czy ktoś ma jakieś pomysły? – xceed

2

Sprawdź datę/godzinę na komputerze lub urządzeniu. W moim przypadku korzystałem z telefonu dev, który był wyłączony przez jakiś czas, a data/czas były całkowicie błędne. Podczas zmiany punktu końcowego z HTTPS na HTTP działa problem, dla mnie właściwym rozwiązaniem było utrzymanie HTTPS i naprawienie daty/czasu na urządzeniu.

+0

To jest poprawna odpowiedź. Nie wyłączaj https tylko z powodu złego urządzenia testującego. –

0

W przypadku, gdy ktoś inny na to wpadnie, doświadczyłem tego samego problemu, gdy po prostu przekazałem adres URL z nieprawidłową subdomeną do MobileServiceClient.

Na przykład coś takiego:

public static MobileServiceClient MobileService = new MobileServiceClient( 
 
    "http://www.example.azure-mobile.net/", 
 
    "fjkdslajkfdlsref31321fgdsat34ajklfdslajfkldsa" 
 
);

-1

Upewnij się, że również ten jest wyłączony.

enter image description here

1

I rozwiązać ten problem w swoich urządzeniach z Androidem. Będziesz potrzebował zabić instancję aplikacji, zmienić datę/godzinę systemową na aktualną i ponownie otworzyć aplikację.

Dzięki Nathanial Woolls !!!

Powiązane problemy