在 Windows 10 移动版上运行的 Windows Phone 8.1 应用程序的后台计时器任务中没有网络
Posted
技术标签:
【中文标题】在 Windows 10 移动版上运行的 Windows Phone 8.1 应用程序的后台计时器任务中没有网络【英文标题】:No networking in background timer task in Windows Phone 8.1 app running on Windows 10 Mobile 【发布时间】:2016-02-28 16:38:13 【问题描述】:Windows phone 8.1 应用程序在 Windows 10 移动版上运行良好,除非它尝试在后台定时任务中进行 http 调用。后台任务使用通用代码,在应用程序处于活动状态时可以正常工作,因此代码可以正常工作,并且请求的 url 在应用程序处于活动状态时也可以正常工作。使用的http客户端是Windows.Web.Http.HttpClient
。
我怀疑 Windows 10 移动版可能需要缺少声明。
'backgroundTaskHost.exe' (CoreCLR: DefaultDomain): 已加载 'C:\windows\system32\mscorlib.ni.dll'。跳过加载符号。模块 已优化并启用了调试器选项“仅我的代码”。 'backgroundTaskHost.exe' (CoreCLR: .): 已加载 'C:\Data\Programs03B4FAD0-869C-11E4-A292-2935E87BC9D6\Install\Imatis.Mobilix.BackgroundTask.winmd'。已加载符号。 'backgroundTaskHost.exe' (CoreCLR: .): 已加载 'C:\windows\system32\SYSTEM.RUNTIME.NI.DLL'。跳过加载符号。 模块已优化,调试器选项“仅我的代码”已启用。 'backgroundTaskHost.exe' (CoreCLR: .): 已加载 'C:\windows\system32\WinMetadata\Windows.winmd'。跳过加载 符号。模块已优化,调试器选项“只是我的代码”是 启用。 'backgroundTaskHost.exe' (CoreCLR: .): 已加载 'C:\windows\system32\SYSTEM.THREADING.TASKS.NI.DLL'。跳过加载 符号。模块已优化,调试器选项“只是我的代码”是 启用。 'backgroundTaskHost.exe' (CoreCLR: .): 已加载 'C:\Data\Programs03B4FAD0-869C-11E4-A292-2935E87BC9D6\Install\Imatis.Mobilix.Library.DLL'。 已加载符号。 'backgroundTaskHost.exe' (CoreCLR: .): 已加载 'C:\windows\system32\SYSTEM.DIAGNOSTICS.DEBUG.NI.DLL'。跳过加载 符号。模块已优化,调试器选项“只是我的代码”是 启用。 'backgroundTaskHost.exe' (CoreCLR: .): 已加载 'C:\windows\system32\SYSTEM.NI.DLL'。跳过加载符号。模块 已优化并启用了调试器选项“仅我的代码”。 'backgroundTaskHost.exe' (CoreCLR: .): 已加载 'C:\windows\system32\SYSTEM.COLLECTIONS.NI.DLL'。跳过加载 符号。模块已优化,调试器选项“只是我的代码”是 启用。 'backgroundTaskHost.exe' (CoreCLR: .): 已加载 'C:\windows\system32\System.Runtime.WindowsRuntime.NI.DLL'。跳过 加载符号。模块经过优化,调试器选项“Just My” 代码'已启用。 'backgroundTaskHost.exe' (CoreCLR: .): 已加载 'C:\Data\Programs03B4FAD0-869C-11E4-A292-2935E87BC9D6\Install\Newtonsoft.Json.DLL'。 跳过加载符号。模块经过优化和调试器选项 “只是我的代码”已启用。 'backgroundTaskHost.exe' (CoreCLR: .): 已加载“C:\windows\system32\SYSTEM.RUNTIME.EXTENSIONS.NI.DLL”。跳过 加载符号。模块经过优化,调试器选项“Just My” 代码'已启用。 'backgroundTaskHost.exe' (CoreCLR: .): 已加载 'C:\windows\system32\SYSTEM.THREADING.NI.DLL'。跳过加载 符号。模块已优化,调试器选项“只是我的代码”是 启用。 'backgroundTaskHost.exe' (CoreCLR: .): 已加载 'C:\windows\system32\SYSTEM.RUNTIME.SERIALIZATION.PRIMITIVES.NI.DLL'。 跳过加载符号。模块经过优化和调试器选项 “只是我的代码”已启用。 'backgroundTaskHost.exe' (CoreCLR: .): 已加载“C:\windows\system32\SYSTEM.RUNTIME.SERIALIZATION.NI.DLL”。 跳过加载符号。模块经过优化和调试器选项 “只是我的代码”已启用。 'backgroundTaskHost.exe' (CoreCLR: .): 已加载“C:\windows\system32\SYSTEM.CORE.NI.DLL”。跳过加载 符号。模块已优化,调试器选项“只是我的代码”是 启用。 'backgroundTaskHost.exe' (CoreCLR: .): 匿名加载 托管 DynamicMethods 程序集'。
抛出异常:mscorlib.ni.dll WinRT 中的“System.Exception” 信息:无法解析服务器名称或地址
无法解析服务器名称或地址 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 在 Library.HttpHelper.d__2.MoveNext()
【问题讨论】:
【参考方案1】:找到了解决办法。 Windows 10 移动版现在要求将 SystemCondition
添加到 BackgroundTaskBuilder
。
builder.AddCondition(new SystemCondition(SystemConditionType.InternetAvailable));
【讨论】:
谢谢,几周来一直在跟踪这个问题。投赞成票!以上是关于在 Windows 10 移动版上运行的 Windows Phone 8.1 应用程序的后台计时器任务中没有网络的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 10 家庭版上安装 .appxbundle