Windows phone 8 在windows phone应用程序中调用webservice时如何增加超时?

Windows phone 8 在windows phone应用程序中调用webservice时如何增加超时?,windows-phone-8,windows-phone-8.1,settimeout,timeoutexception,Windows Phone 8,Windows Phone 8.1,Settimeout,Timeoutexception,我开发了一个windows phone应用程序。但应用程序因超时异常而崩溃。如何处理此超时异常。请帮助我。以下是我的代码: public async void Login() { var client = new NewReloadApp.JsonWebClient(); var resp = await client.DoRequestAsync(Url.weburl + "Validateuser_v2?Emailid=" + Emailid.

我开发了一个windows phone应用程序。但应用程序因超时异常而崩溃。如何处理此超时异常。请帮助我。以下是我的代码:

  public async void Login()
        {


     var client = new NewReloadApp.JsonWebClient();

      var resp = await client.DoRequestAsync(Url.weburl + "Validateuser_v2?Emailid=" + Emailid.Text + "&Password=" + password.Password + "&DeviceID=" + deviceid + "&PlatformID=7&DeviceToken=windowsReload&Mobilemodel=nokia&Appversion=1.4.14&MobileOS=windows");

                string result = resp.ReadToEnd();

                JObject obj = JObject.Parse(result);
}
我没有使用任何httpwebrequest方法。在上述代码中,我尝试设置timeout属性,但无法获得任何timeout方法。请帮助我如何为上述代码设置超时

下面是我的jsonwebclient类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace NewReloadApp
{
    class JsonWebClient
    {

        public async Task<T> DoRequestJsonAsync<T>(WebRequest req)
        {
            var ret = await DoRequestAsync(req);
            var response = await ret.ReadToEndAsync();
            return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(response);
        }

        public async Task<T> DoRequestJsonAsync<T>(string uri)
        {
            var ret = await DoRequestAsync(uri);
            var response = await ret.ReadToEndAsync();
            return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(response);
        }

        public async Task<System.IO.TextReader> DoRequestAsync(WebRequest req)
        {
            var task = Task.Factory.FromAsync((cb, o) => ((HttpWebRequest)o).BeginGetResponse(cb, o), res => ((HttpWebRequest)res.AsyncState).EndGetResponse(res), req);
            var result = await task;
            var resp = result;
            var stream = resp.GetResponseStream();
            var sr = new System.IO.StreamReader(stream);
            return sr;
        }

        public async Task<System.IO.TextReader> DoRequestAsync(string url)
        {
            HttpWebRequest req = HttpWebRequest.CreateHttp(url);
            req.AllowReadStreamBuffering = true;
            var tr = await DoRequestAsync(req);
            return tr;
        }
    }

}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
Net系统;
使用系统文本;
使用System.Threading.Tasks;
名称空间NewReloadApp
{
类JsonWebClient
{
公共异步任务DoRequestJsonAsync(WebRequestReq)
{
var ret=等待数据同步(req);
var response=wait ret.ReadToEndAsync();
返回Newtonsoft.Json.JsonConvert.DeserializeObject(响应);
}
公共异步任务DoRequestJsonAsync(字符串uri)
{
var ret=等待数据同步(uri);
var response=wait ret.ReadToEndAsync();
返回Newtonsoft.Json.JsonConvert.DeserializeObject(响应);
}
公共异步任务DoRequestAsync(WebRequest req)
{
var task=task.Factory.fromsync((cb,o)=>((HttpWebRequest)o)。BeginGetResponse(cb,o),res=>((HttpWebRequest)res.AsyncState)。EndGetResponse(res),req);
var结果=等待任务;
var resp=结果;
var stream=resp.GetResponseStream();
var sr=新系统IO.StreamReader(流);
返回sr;
}
公共异步任务DoRequestAsync(字符串url)
{
HttpWebRequest req=HttpWebRequest.CreateHttp(url);
req.AllowreadStream缓冲=真;
var tr=等待数据同步(req);
返回tr;
}
}
}
使用CancellationToken:

我没有尽力,但它可能会对你有帮助

public async Task<System.IO.TextReader> DoRequestAsync(string url)
    {
        CancellationTokenSource ct= new CancellationTokenSource(2000); //2 
        HttpWebRequest req = HttpWebRequest.CreateHttp(url);
        req.AllowReadStreamBuffering = true;
        var tr = await DoRequestAsync(req).AsTask(ct.Token);;
        return tr;
    }
公共异步任务DoRequestAsync(字符串url)
{
CancellationTokenSource ct=新的CancellationTokenSource(2000);//2
HttpWebRequest req=HttpWebRequest.CreateHttp(url);
req.AllowreadStream缓冲=真;
var tr=wait dorequestatsync(req.AsTask(ct.Token);;
返回tr;
}

如本文所述,您可能需要共享jsonwebclient类,或链接到它(至少我不熟悉它)@zedd请查看我编辑的代码我正在共享我的jsonwebclient类公共异步任务DoRequestAsync(字符串url){HttpWebRequest req=HttpWebRequest.CreateHttp(url);req.ContinueTimeout=30000;req.AllowReadStreamBuffering=true;var tr=wait DoRequestAsync(req);返回tr;}@zedd我在上述代码中添加了req.ContinueTimeout=30000扩展超时值正确与否谢谢您的回复,但它对我无效。我使用.ContinueTimeout方法。是否正确。请帮助我您可以尝试req.timeout