Hallo Ich habe ein Silverlight-Projekt für WP8.1, das ein Spiel ist. Ich benutze eine backgroundTask, um den Benutzer zu informieren, wann er das letzte Mal gespielt hat. Wenn er zu langsam ist, um dem nachzukommen, möchte ich einen Anruf vom bagroundTask zum Server machen, um von den Spielen zurückzutreten.WP Silverlight BackgroundTask Kommunikation mit Azure
Die Hintergrundtask wird mit stackoverflow und this blog erstellt, nur grundlegende Implementierungen der Hintergrundtask.
Ich installiere dann das NuGet Paket Microsoft.Azure.Mobile.Client
und alles ist in Ordnung, ich mache dann eine Kompilierung, alles gelingt.
Die App installiert und Begrüßungsbildschirm angezeigt wird, dann habe ich einen Fehler im Hauptprojekt bei der Initialisierung von MobileServiceClient
erhalten in App.xaml.cs
public MobileServiceClient MobileService = new MobileServiceClient(
"https://xxxxx.azurewebsites.net"
);
Die Ausnahme in der obigen Zeile heißt es:
Eine Ausnahme vom Typ 'System.IO.FileNotFoundException' trat in mscorlib.ni.dll auf, wurde aber nicht im Benutzercode verarbeitet Zusätzliche Informationen: Datei oder Assembly konnte nicht geladen werden 'System.Runtime.InteropServices, Version = 4.0.10.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a 'oder eine seiner Abhängigkeiten. Die angegebene Datei wurde vom System nicht gefunden.
Die einzige Änderung war die Installation des NuGet-Pakets im Projekt backgroundTask. Die Stack-Trace-Ausgabe für die obige Ausnahme.
bei System.ModuleHandle.ResolveType (RuntimeModule Modul, Int32 typeToken, IntPtr * typeInstArgs, Int32 typeInstCount, IntPtr * methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack Typ) bei System.ModuleHandle.ResolveTypeHandleInternal (RuntimeModule Modul, Int32 typeToken, Runtimetypehandle [] typeInstantiationContext, Runtimetypehandle [] methodInstantiationContext) bei System.Reflection.RuntimeModule.ResolveType (Int32 metadataToken, Type [] genericTypeArguments, Type [] genericMethodArguments) bei System.Reflection.CustomAttribute.FilterCustomAttributeRecord (CustomAttributeRecord caRecord, MetadataImport Umfang, Montage & lastAptcaOkAssembly, RuntimeModule decoratedModule, MetadataT Oken decoratedToken, Runtime attributeFilterType, Boolean mustBeInheritable, Object [] Attribute, IList derivedAttributes, Runtime & attribute, IRuntimeMethodInfo & Ctor, Boolean & ctorHasParameters, Boolean & isVarArg) bei System.Reflection.CustomAttribute.GetCustomAttributes (RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, Runtime attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent) bei System.Reflection.CustomAttribute.GetCustomAttributes (RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, Runtime attributeFilterType, Boolean isDecoratedTargetSecurityTransparent) bei System.Reflection.CustomAttribute.GetCustomAttributes (RuntimeAss embly Montage, Runtime CAtype) bei System.Reflection.RuntimeAssembly.GetCustomAttributes (Typ attribute, Boolean Inherit) bei System.Attribute.GetCustomAttributes (Montageelement, Typ attribute, Boolean Inherit) bei Microsoft.WindowsAzure.MobileServices.PlatformInformationExtensions.GetVersionFromAssemblyFileVersion (IPlatformInformation platformInformation) bei Microsoft.WindowsAzure.MobileServices.PlatformInformation.get_Version() bei Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.GetUserAgentHeader() bei Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient..ctor (IEnumerable`1 Handler, Uri applicationUri, String InstallationID) bei Microsoft.WindowsAzure.MobileServices.MobileServiceClient..ctor (Uri mobileAppUri, HttpMessageHandler [] Handler) bei Microsoft.WindowsAzure.MobileServices.MobileServiceClient..ctor (String mobileAppUri, HttpMessageHandler [] Handler) bei BC_Menu.App..ctor()
ich habe nicht in der Lage gewesen, dieses Problem zu lösen.
Extra-
Ich bin in der Lage normale http Anrufe auf die Bahn zu tun, indem die proposed code verwenden, hier repliziert:
BackgroundTaskDeferral _deferral;
public async void Run(IBackgroundTaskInstance taskInstance)
{
_deferral = taskInstance.GetDeferral();
// your async code
_deferral.Complete();
}
-Update auf Basis von Adrian Halls Antwort
Die Code funktioniert, meine Frontapplikation kann mit dem Server und allem kommunizieren. Die backgroundTask, kann Informationen aus dem Gerät extrahieren alles ist in Ordnung, alles kompiliert und läuft.
Ich füge dann das NuGet-Paket zu der Hintergrundtask und plötzlich erscheint der obige Fehler, wenn ich diese Lösung auf den Client bereitstellen.
Ich verwende VS2015, Win10, und habe v2.0.1 von Microsoft.Azure.Mobile.Client installiert. Ich habe einige seltsame Verhaltensweisen bei Silverlight-Projekten unter win10 before gesehen.
Es ist die Version, die installiert ist, werde ich versuchen, dies zu ändern. Also wird die Installation des Pakets in einem Projekt die Abhängigkeiten in einem anderen beeinflussen? Nur um klarzustellen? – JTIM
Ich bin mir jetzt etwas unsicher, dass ich deine Antwort noch einmal gelesen habe. Der Code funktioniert, meine Frontapplikation kann mit dem Server und allem kommunizieren. Die backgroundTask, kann Informationen aus dem Gerät extrahieren alles ist in Ordnung, alles kompiliert und läuft. Ich füge dann das NuGet-Paket der backgroundTask hinzu und plötzlich erscheint der obige Fehler. Ich verwende VS2015, Win10 und habe v2.0.1 von Microsoft.Azure.Mobile.Client installiert. – JTIM
@JTIM Ich dachte, dass Hintergrundaufgaben immer WPA sein müssen, nicht Silverlight? Können Sie versuchen, es in eine separate Assembly zu legen und das Ziel auf Nicht-Silverlight zu ändern? –