WP Silverlight BackgroundTask与Azure的通信

时间:2016-05-22 08:13:27

标签: azure silverlight windows-phone-8 windows-phone-8.1 azure-mobile-services

你好,我有一个WP8.1的Silverlight项目,这是一款游戏。我使用backgroundTask来提醒用户他上次玩的时间,如果他太慢而无法遵守我想从bagroundTask拨打服务器从游戏中退出。

backgroundTask是使用stackoverflowthis blog创建的,只是backgroundTask的基本实现。

然后我安装了NuGet包Microsoft.Azure.Mobile.Client,一切都很好,然后我做了一个编译,一切都成功了。

出现应用安装和启动画面,然后在MobileServiceClient

中初始化App.xaml.cs时,我在主项目中收到错误
 public MobileServiceClient MobileService = new MobileServiceClient(
        "https://xxxxx.azurewebsites.net"
    );

上述行中的例外情况:

  

类型' System.IO.FileNotFoundException'的例外情况发生在mscorlib.ni.dll但未在用户代码中处理   附加信息:无法加载文件或程序集&System; Run.Runtime.InteropServices,Version = 4.0.10.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其中一个依赖项。系统找不到指定的文件。

唯一的变化是在backgroundTask项目中安装了NuGet包。上面例外的堆栈跟踪输出。

  

在System.ModuleHandle.ResolveType(RuntimeModule模块,Int32 typeToken,IntPtr * typeInstArgs,Int32 typeInstCount,IntPtr * methodInstArgs,Int32 methodInstCount,ObjectHandleOnStack类型)      在System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule模块,Int32 typeToken,RuntimeTypeHandle [] typeInstantiationContext,RuntimeTypeHandle [] methodInstantiationContext)      在System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken,Type [] genericTypeArguments,Type [] genericMethodArguments)      at System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord,MetadataImport scope,Assembly& lastAptcaOkAssembly,RunadataModule decoratedModule,MetadataToken decoratedToken,RuntimeType attributeFilterType,Boolean mustBeInheritable,Object [] attributes,IList derivedAttributes,RuntimeType& attributeType,IRuntimeMethodInfo& ctor,Boolean& ctorHasParameters ,布尔& isVarArg)      在System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule,Int32 decoratedMetadataToken,Int32 pcaCount,RuntimeType attributeFilterType,Boolean mustBeInheritable,IList derivedAttributes,Boolean isDecoratedTargetSecurityTransparent)      在System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule,Int32 decoratedMetadataToken,Int32 pcaCount,RuntimeType attributeFilterType,Boolean isDecoratedTargetSecurityTransparent)      在System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeAssembly程序集,RuntimeType caType)      在System.Reflection.RuntimeAssembly.GetCustomAttributes(Type attributeType,Boolean inherit)      at System.Attribute.GetCustomAttributes(Assembly element,Type attributeType,Boolean inherit)      在Microsoft.WindowsAzure.MobileServices.PlatformInformationExtensions.GetVersionFromAssemblyFileVersion(IPlatformInformation platformInformation)      在Microsoft.WindowsAzure.MobileServices.PlatformInformation.get_Version()      在Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient.GetUserAgentHeader()      在Microsoft.WindowsAzure.MobileServices.MobileServiceHttpClient..ctor(IEnumerable`1处理程序,Uri applicationUri,String installationId)      在Microsoft.WindowsAzure.MobileServices.MobileServiceClient..ctor(Uri mobileAppUri,HttpMessageHandler []处理程序)      在Microsoft.WindowsAzure.MobileServices.MobileServiceClient..ctor(String mobileAppUri,HttpMessageHandler []处理程序)      在BC_Menu.App..ctor()

我无法解决这个问题。

附加

我可以使用proposed code对网络进行正常的http调用,在此复制:

BackgroundTaskDeferral _deferral;

public async void Run(IBackgroundTaskInstance taskInstance)
{
    _deferral = taskInstance.GetDeferral();
    // your async code
    _deferral.Complete();
}

根据Adrian Halls答案进行更新

代码有效,我的前端应用程序可以与服务器和一切进行通信。 backgroundTask,可以从设备中提取信息一切正常,一切都编译并运行。

然后我将NuGet包添加到backgroundTask,当我将此解决方案部署到客户端时,突然出现上述错误。

我正在运行VS2015,Win10,并安装了Microsoft.Azure.Mobile.Client的v2.0.1。我在win10 before上看到了一些关于silverlight项目的奇怪行为。

1 个答案:

答案 0 :(得分:2)

错误表明您的.NET设置存在问题 - 错误发生在mscorlib(.NET的基本库)中。尝试添加对所需特定库的引用。另外,请确保已安装v2.0.1(或更高版本)或Microsoft.Azure.Mobile.Client库。