C# WebRequest异步asp.net-mvc

C# WebRequest异步asp.net-mvc,c#,asp.net-mvc,async-await,C#,Asp.net Mvc,Async Await,我使用代码从Atlassian Jira获取数据,并将响应中的数据放入容器中,如何使此方法异步? 我尝试过webrequest的各种方法,但它们都指向代码中的错误,也许我根本不理解它是如何工作的。您可以建议使用文档或在代码中指定我可以对此类请求使用异步做什么 public IEnumerable<JiraDataModel> GetData(string dateFrom, string dateTo) { int allTicketsCou

我使用代码从Atlassian Jira获取数据,并将响应中的数据放入容器中,如何使此方法异步? 我尝试过webrequest的各种方法,但它们都指向代码中的错误,也许我根本不理解它是如何工作的。您可以建议使用文档或在代码中指定我可以对此类请求使用异步做什么

 public IEnumerable<JiraDataModel> GetData(string dateFrom, string dateTo)
        {
            int allTicketsCount = 0;
            int devTicketsCount = 0;
            int slaTicketsCount = 0;

            List<JiraRequestUrl> urlArray = new List<JiraRequestUrl>();
urlArray.AddRange(new List<JiraRequestUrl>

        {
            new JiraRequestUrl{type = "all", //*data*//},
            new JiraRequestUrl(){type = "dev",//*data*//});

            try
        {
            foreach (JiraRequestUrl u in urlArray)
            {
                WebRequest request = WebRequest.Create(_jiraUrl + u.url);
                request.ContentType = "application/json; charset=utf-8";
                request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(_credentials)));
                request.Headers.Add("maxResults", "100");

                HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
                    JiraGetDataModel.RootObject DeserializedResponse = (JiraGetDataModel.RootObject)JsonConvert.DeserializeObject(responseString, typeof(JiraGetDataModel.RootObject));

                    if (u.type.Equals("all"))
                    {
                        allTicketsCount = DeserializedResponse.total;
                    }
                    if (u.type.Equals("dev"))
                    {
                        devTicketsCount = DeserializedResponse.total;
                    }
                }
            }
public IEnumerable GetData(字符串dateFrom,字符串dateTo)
{
int allTicketsCount=0;
int devticketscont=0;
int slaTicketsCount=0;
List urlArray=new List();
urlArray.AddRange(新列表
{
新的JiraRequestUrl{type=“all”,//*数据*/},
新的JiraRequestUrl(){type=“dev”,//*数据*/});
尝试
{
foreach(URLARY数组中的JiraRequestUrl u)
{
WebRequest=WebRequest.Create(_jiraUrl+u.url);
request.ContentType=“application/json;charset=utf-8”;
request.Headers.Add(“Authorization”,“Basic”+Convert.ToBase64String(Encoding.Default.GetBytes(_-credentials));
添加(“maxResults”、“100”);
HttpWebResponse=(HttpWebResponse)request.GetResponse();
if(response.StatusCode==HttpStatusCode.OK)
{
var responseString=newstreamreader(response.GetResponseStream()).ReadToEnd();
JiraGetDataModel.RootObject反序列化响应=(JiraGetDataModel.RootObject)JsonConvert.DeserializeObject(responseString,typeof(JiraGetDataModel.RootObject));
如果(u.type.等于(“全部”))
{
AllTicketCount=DeserializedResponse.total;
}
如果(u.type.Equals(“dev”))
{
DevticketScont=反序列化响应.total;
}
}
}

抱歉,我不太明白我没有插入尝试使用异步的内容,我做到了,而且似乎很有效,我可以改进代码中的某些内容吗?添加了2行

  public async Task<IEnumerable<JiraDataModel>> GetData(string dateFrom, string dateTo)
        {
            int allTicketsCount = 0;
            int devTicketsCount = 0;
            int slaTicketsCount = 0;

            List<JiraRequestUrl> urlArray = new List<JiraRequestUrl>();

            urlArray.AddRange(new List<JiraRequestUrl>
        {
            new JiraRequestUrl{type = "all", //*data*//},
            new JiraRequestUrl(){type = "dev",//*data*//});

            try
        {
            foreach (JiraRequestUrl u in urlArray)
            {
                WebRequest request = WebRequest.Create(_jiraUrl + u.url);
                request.ContentType = "application/json; charset=utf-8";
                request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(_credentials)));
                request.Headers.Add("maxResults", "100");

                HttpWebResponse response = (HttpWebResponse)(await request.GetResponseAsync()request.GetResponse();

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
                    JiraGetDataModel.RootObject DeserializedResponse = (JiraGetDataModel.RootObject)JsonConvert.DeserializeObject(responseString, typeof(JiraGetDataModel.RootObject));

                    if (u.type.Equals("all"))
                    {
                        allTicketsCount = DeserializedResponse.total;
                    }
                    if (u.type.Equals("dev"))
                    {
                        devTicketsCount = DeserializedResponse.total;
                    }
                }
            }
public异步任务GetData(字符串dateFrom,字符串dateTo)
{
int allTicketsCount=0;
int devticketscont=0;
int slaTicketsCount=0;
List urlArray=new List();
urlArray.AddRange(新列表
{
新的JiraRequestUrl{type=“all”,//*数据*/},
新的JiraRequestUrl(){type=“dev”,//*数据*/});
尝试
{
foreach(URLARY数组中的JiraRequestUrl u)
{
WebRequest=WebRequest.Create(_jiraUrl+u.url);
request.ContentType=“application/json;charset=utf-8”;
request.Headers.Add(“Authorization”,“Basic”+Convert.ToBase64String(Encoding.Default.GetBytes(_-credentials));
添加(“maxResults”、“100”);
HttpWebResponse=(HttpWebResponse)(wait request.GetResponseAsync()request.GetResponse();
if(response.StatusCode==HttpStatusCode.OK)
{
var responseString=newstreamreader(response.GetResponseStream()).ReadToEnd();
JiraGetDataModel.RootObject反序列化响应=(JiraGetDataModel.RootObject)JsonConvert.DeserializeObject(responseString,typeof(JiraGetDataModel.RootObject));
如果(u.type.等于(“全部”))
{
AllTicketCount=DeserializedResponse.total;
}
如果(u.type.Equals(“dev”))
{
DevticketScont=反序列化响应.total;
}
}
}

您可以共享操作方法的完整代码吗?还有您遇到的错误是什么?也可以共享错误消息。@Rahatur,您好,添加了完整的代码。我没有使用async保存任何错误,因为我试图错误地使用这些方法,如果您没有说明您面临的问题和问题所在,我会将代码返回到原始状态然后,社区成员不会发现错误。问题将被标记为质量差并关闭。由于您是新手,为了获得帮助,我建议尽可能多地提供信息。请参阅此处的问题指南:如果您不向我们展示您尝试了什么以及错误是什么,我们就没有太多机会帮助您无法修复不可见代码的不可见问题。不管怎样,您到底希望异步什么?我假设的HTTP请求?和/或其他什么?还不完全清楚。另外,假设您希望异步使用webrequest,您是否查看过其他在线现有资料?例如。