【发布时间】:2020-03-02 19:33:06
【问题描述】:
我使用代码从 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;
}
}
}
【问题讨论】:
-
可以分享action方法的完整代码吗?还有什么是你得到的错误?也分享错误信息。
-
@Rahatur,嗨,添加了完整的代码。我没有用 async 保存任何错误,因为我尝试错误地使用方法,并将代码返回到其原始状态
-
如果您没有说明您面临的问题以及在哪一行,那么社区成员将不会发现错误。该问题将被标记为质量差并关闭。由于您是新手,为了获得帮助,我建议您提供尽可能多的信息。请参阅此处的问题指南:stackoverflow.com/help/how-to-ask
-
如果您不向我们展示您尝试了什么以及错误是什么,我们就没有多少机会帮助您。我们无法用不可见的代码解决不可见的问题。无论如何,您到底想做什么异步?我假设的 HTTP 请求?和/或别的什么?还不是很清楚。
-
P.S.假设您想异步使用 webrequest,您是否在网上查看过其他现有资料?例如以stackoverflow.com/a/49225438/5947043 为例。
标签: c# asp.net-mvc async-await