C# 从应用程序本身内部检查更新
您好,朋友们,我正在按照这个步骤执行应用程序内部的更新检查。但我没有执行它,我已经扩展了请求,我认为它的内容存在问题 问题是它无法获得更新版本C# 从应用程序本身内部检查更新,c#,.net,windows-phone-7,C#,.net,Windows Phone 7,您好,朋友们,我正在按照这个步骤执行应用程序内部的更新检查。但我没有执行它,我已经扩展了请求,我认为它的内容存在问题 问题是它无法获得更新版本 var request = WebRequest.Create(url); // here i checked it on applying breakpoints private Task<Version> GetUpdatedVersion() { var cultureInfoName = CultureInfo.Curre
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);
var request=WebRequest.Create(url);//在这里,我在应用断点时检查了它
私有任务GetUpdatedVersion()
{
var CultureInfo Name=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(),
文化信息名);
var request=WebRequest.Create(url);
返回Task.Factory.fromsync(request.BeginGetResponse,result=>
{
var response=(HttpWebResponse)request.EndGetResponse(result);
if(response.StatusCode!=HttpStatusCode.OK)
{
抛出新的WebException(“Http错误:+response.StatusCode”);
}
使用(var outputStream=response.GetResponseStream())
{
使用(var reader=XmlReader.Create(outputStream))
{
reader.MoveToContent();
var aNamespace=reader.LookupNamespace(“a”);
reader.ReadToFollowing(“条目”,aNamespace);
reader.ReadToDescendant(“版本”);
返回新版本(reader.ReadElementContentAsString());
}
}
},空);
}
WebRequest有一些内置异步扩展,无需构建自己的扩展。您可以直接使用
WebResponse-response=wait-request.GetResponseAsync();
关于真正的问题,我在调试屏幕截图中用app id检查了商店,因此这个id可能是用于开发的app id,而不是商店中app的真实app id,为了让它工作,它需要是真实的商店id(当你真的将应用发布到应用商店时,它应该可以工作,因为应用商店将自动更新应用id)。如果你还没有将应用发布到应用商店,最好的测试方法可能是使用另一个应用的应用id进行测试。
更新:
显然是应用程序id出了问题。(就像我说的,它需要是商店应用程序中已发布应用程序的应用程序id,而不是本地开发应用程序的应用程序id)你忘了问一个问题。为什么不让它成为一个同步过程并进行调试呢?我已经更新了这个问题..检查它..并且我必须使这个更新异步..这很好,但是让它成为一个同步过程来让它工作并使它更容易调试,让你一步一步地完成它吗?为什么不让它成为一个同步过程呢async何时实际工作?我已经尝试过了..Arran..但最终它没有得到更新版本我尝试过使用应用id为app on store..的版本,并且在添加您给定的名称空间时出现错误..名称空间中不存在线程..您正在使用async bcl nuget包支持wp7上的任务,对吗?或者您正在使用async bcl nuget包支持wp7上的任务在windows phone 8上?(你的帖子被标记为windows phone 7)我的应用程序将针对两个平台。实际上主要问题是。链接实际上说它适用于两个平台。并且工作正常。那么我为什么会遇到问题?我刚刚用商店随机应用程序的应用程序id(“8bc8ee8a-03eb-42e9-9a5f-4DC6505D430”)测试了你的代码而且它工作正常,所以它是一个带有你正在使用的应用程序id的pb。你完全按照链接进行了吗?