-2

您好朋友,我正在关注此链接以实现从应用程序内部检查更新。但我没有实现它,我已经扩展了请求,我认为它的内容存在问题。

问题是它无法获得更新版本。

var request = WebRequest.Create(url); // here i checked it on applying breakpoints 

private Task<Version> GetUpdatedVersion()
{
    var cultureInfoName = CultureInfo.CurrentUICulture.Name;
var url = string.Format("http://marketplaceedgeservice.windowsphone.com/v8/catalog/apps/{0}?os={1}&cc={2}&oc=&lang={3}​",
    GetManifestAttributeValue("ProductID"),
    Environment.OSVersion.Version,
    cultureInfoName.Substring(cultureInfoName.Length - 2).ToUpperInvariant(),
    cultureInfoName);

var request = WebRequest.Create(url);

return Task.Factory.FromAsync(request.BeginGetResponse, result =>
{
    var response = (HttpWebResponse)request.EndGetResponse(result);

    if (response.StatusCode != HttpStatusCode.OK)
    {
        throw new WebException("Http Error: " + response.StatusCode);
    }

    using (var outputStream = response.GetResponseStream())
    {
        using (var reader = XmlReader.Create(outputStream))
        {
            reader.MoveToContent();

            var aNamespace = reader.LookupNamespace("a");

            reader.ReadToFollowing("entry", aNamespace);

            reader.ReadToDescendant("version");

            return new Version(reader.ReadElementContentAsString());
        }
    }
}, null);

}

在此处输入图像描述

4

1 回答 1

2

WebRequest 有一些内置的异步扩展,无需自己构建。您可以直接使用WebResponse response= await request.GetResponseAsync();
关于真正的问题,我在调试屏幕截图中使用应用程序 id 检查了商店,找不到任何与此应用程序 id 对应的应用程序,因此此 id 可能是用于开发的应用程序 id,而不是真正的应用程序 id商店中的应用程序,它需要是真实的商店ID(当您真正将应用程序发布到商店时,它应该可以工作,因为商店会自动更新应用程序ID)。如果您还没有将应用程序发布到商店,为了测试最好的可能只是使用另一个应用程序的应用程序 ID 进行测试。
更新:
显然,问题出在应用程序 ID 上。(就像我说的那样,它需要是商店应用程序中已发布应用程序的应用程序 ID,而不是本地开发的应用程序 ID)

于 2013-09-17T18:52:35.523 回答