Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows phone 7 WebBrowserTask.Show成功返回后,WP7浏览器将挂起_Windows Phone 7_Windows Phone 7.1 - Fatal编程技术网

Windows phone 7 WebBrowserTask.Show成功返回后,WP7浏览器将挂起

Windows phone 7 WebBrowserTask.Show成功返回后,WP7浏览器将挂起,windows-phone-7,windows-phone-7.1,Windows Phone 7,Windows Phone 7.1,我有一个WP7应用程序,它使用WebBrowserTask.Show在浏览器中启动页面。WebBrowserTask.URL值是使用Uri.EscapeDataString转义的。URL中有多个查询字符串参数,页面在浏览器中正确显示 在WP OS 7.0上,离开浏览器后,然后从起始页再次启动浏览器,页面加载进度指示器大约在中途停止,页面无法正确加载 如果应用程序返回到,并且使用WebBrowserTask.Show再次在浏览器中启动同一页,则浏览器加载也会挂起 在WP OS 7.1上,离开浏览器

我有一个WP7应用程序,它使用WebBrowserTask.Show在浏览器中启动页面。WebBrowserTask.URL值是使用Uri.EscapeDataString转义的。URL中有多个查询字符串参数,页面在浏览器中正确显示

在WP OS 7.0上,离开浏览器后,然后从起始页再次启动浏览器,页面加载进度指示器大约在中途停止,页面无法正确加载

如果应用程序返回到,并且使用WebBrowserTask.Show再次在浏览器中启动同一页,则浏览器加载也会挂起

在WP OS 7.1上,离开浏览器并再次启动浏览器后,页面将正确加载


对WP OS 7.0的问题有什么见解吗?是否有任何修复或解决方法?我有一部分重要的用户在几个月内不会使用Mango。

我认为整个URL的Uri.EscapeDataString不是正确的方法。例如,见:

string uriString =
    "https://www.google.com/search?gcx=w&sourceid=chrome&ie=UTF-8&q=test query";

string escapedDataString = Uri.EscapeDataString(uriString);
    "https%3A%2F%2Fwww.google.com%2Fsearch%3Fgcx%3Dw%26sourceid%3Dchrome%26ie%3DUTF-8%26q%3Dtest%20query"

string escapedUriString = Uri.EscapeUriString(uriString);
    "https://www.google.com/search?gcx=w&sourceid=chrome&ie=UTF-8&q=test%20query"
EscapeDataString似乎通过转义所有内容(包括https://前缀)完全破坏了URL,而EscapeUristing只是转义需要转义的内容

根据,您应该使用EscapeUriString方法准备一个未转换的URI字符串作为URI构造函数的参数

就我个人而言,我总是只转义我正在构建的Uri的参数,因此,例如,如果参数值包含一个符号AND,我可以强制转义它,而不是依赖于转义器来了解一切

显然-https%3A%2F%2Fwww.google.com%2Fsearch%3Fgcx%3Dw%26sourceid%3dcrome%26ie%3DUTF-8%26q%3Dtest%20查询不是有效的URL

*编辑

我一定没有注意到WP7.0中只有一个字符串URL属性现在在WP7.1中已过时,而且该属性确实需要使用EscapeDataString转义整个URL。我在两种项目类型中都尝试过——目标是7.0和7.1,但没有注意到任何挂起。唯一的区别是7.0会永远删除我的应用程序,而7.1不会。也许应用程序中还有其他一些代码会在您从坟墓中回来时阻塞。这是我的密码:

string uriString = 
    "https://www.google.com/search?gcx=w&sourceid=chrome&ie=UTF-8&q=test query";
string escapedDataString = Uri.EscapeDataString(uriString);

var wbt = new WebBrowserTask();
wbt.URL = escapedDataString;
wbt.Show();

另一个想法是,对uri字符串进行两次转义,首先对整个地址使用EscapeUristing调用,或者在构建字符串时仅对参数调用EscapeDataString,然后再次使用EscapeDataString转义整个结果uri。

也许您应该使用uri.EscapeUristing而不是uri.EscapeDataString。是转义整个字符串还是仅转义参数值?您是否验证了您在桌面计算机上打开的URL正常?谢谢您的想法,@xyzer。WP OS 7.0 docs.chm文件清楚地表明需要Uri.EscapeDataString。我在开发过程中发现这一点是正确的,因为对于WebBrowserTask.URL,Uri.EscapeUristing不成功。我正在转义整个字符串:URL是从另一个源传入的,所以这是一件容易的事情。在桌面浏览器中,未扫描的URL可以正常打开。没错,在WP OS 7.0中,WebBrowserTask具有URL属性;在WP OS 7.1中,它有一个Uri属性,并将以前的URL属性标记为过时。正如我所解释的,问题不在于返回应用程序,返回浏览器时会产生问题。由于我在使用最后一个代码段多次调用WebBrowserTask时没有看到任何挂起,我想说的是,您的URL字符串或该地址的web资源仍然有问题。Emulator仅适用于同时针对7.0和7.1的项目。那么这不是一个非常有用的数据指向正如我在问题中指出的,7.1中的浏览器不存在此问题。在支持7.1项目的仿真器中进行测试不会出现问题。还是谢谢你抽出时间。