我有一个方法,将不会返回到浏览器的响应,我试过使用浏览器本身和铬扩展POSTMan。任务<T>在WebApi没有响应,但返回非任务工程
[AllowAnonymous]
[Route("getNotifications")]
[AcceptVerbs("Get", "Post")]
public Task<List<UserNotifications>> GetNotifications()
{
Task<List<UserNotifications>> userNotList = new Task<List<UserNotifications>>(() => new List<UserNotifications>{
new UserNotifications()
{
UserId = new Guid(),
MessageText = "Message 1",
MessageTime = DateTime.Now,
Status = true,
Subject = "new message 1"
},
new UserNotifications()
{
UserId = new Guid(),
MessageText = "Message 2",
MessageTime = DateTime.Now,
Status = true,
Subject = "new message 2"
},
new UserNotifications()
{
UserId = new Guid(),
MessageText = "Message 3",
MessageTime = DateTime.Now,
Status = true,
Subject = "new message 3"
}
});
return userNotList;
}
但是,如果我改变方法不返回类型任务...
[AllowAnonymous]
[Route("getNotifications")]
[Authorize]
[AcceptVerbs("Get", "Post")]
public List<UserNotifications> GetNotifications()
{
var newstring = "";
List<UserNotifications> userNotList = new List<UserNotifications>{
new UserNotifications()
{
UserId = new Guid(),
MessageText = "Message 1",
MessageTime = DateTime.Now,
Status = true,
Subject = "new message 1"
},
new UserNotifications()
{
UserId = new Guid(),
MessageText = "Message 2",
MessageTime = DateTime.Now,
Status = true,
Subject = "new message 2"
},
new UserNotifications()
{
UserId = new Guid(),
MessageText = "Message 3",
MessageTime = DateTime.Now,
Status = true,
Subject = "new message 3"
}
};
return userNotList;
}
我得到的每一次
[
{
"userId": "00000000-0000-0000-0000-000000000000",
"subject": "new message 1",
"messageText": "Message 1",
"messageTime": "2014-05-19T11:03:32.707957-04:00",
"status": true
},
{
"userId": "00000000-0000-0000-0000-000000000000",
"subject": "new message 2",
"messageText": "Message 2",
"messageTime": "2014-05-19T11:03:32.707957-04:00",
"status": true
},
{
"userId": "00000000-0000-0000-0000-000000000000",
"subject": "new message 3",
"messageText": "Message 3",
"messageTime": "2014-05-19T11:03:32.707957-04:00",
"status": true
}
]
为什么当我使用任务并没有得到回来之后通过测试呼叫直接返回浏览器到webapi服务?
编辑1
更改方法来这个......还是坐在旋转它的轮子出于某种原因
[AllowAnonymous]
[Route("getNotifications")]
[AcceptVerbs("Get", "Post")]
public async Task<List<UserNotifications>> GetNotifications()
{
Task<List<UserNotifications>> userNotList = new Task<List<UserNotifications>>(() => new List<UserNotifications>{
new UserNotifications()
{
UserId = new Guid(),
MessageText = "Message 1",
MessageTime = DateTime.Now,
Status = true,
Subject = "new message 1"
},
new UserNotifications()
{
UserId = new Guid(),
MessageText = "Message 2",
MessageTime = DateTime.Now,
Status = true,
Subject = "new message 2"
},
new UserNotifications()
{
UserId = new Guid(),
MessageText = "Message 3",
MessageTime = DateTime.Now,
Status = true,
Subject = "new message 3"
}
});
return await userNotList;
}
然而,当我改成了这个......
[AllowAnonymous]
[Route("getNotifications")]
[AcceptVerbs("Get", "Post")]
public Task<List<UserNotifications>> GetNotifications()
{
var newstring = "";
List<UserNotifications> userNotList = new List<UserNotifications>{
new UserNotifications()
{
UserId = new Guid(),
MessageText = "Message 1",
MessageTime = DateTime.Now,
Status = true,
Subject = "new message 1"
},
new UserNotifications()
{
UserId = new Guid(),
MessageText = "Message 2",
MessageTime = DateTime.Now,
Status = true,
Subject = "new message 2"
},
new UserNotifications()
{
UserId = new Guid(),
MessageText = "Message 3",
MessageTime = DateTime.Now,
Status = true,
Subject = "new message 3"
}
};
return Task.FromResult(userNotList);
}
它返回的结果很好......任何人都可以澄清这些方法之间的区别。我冒险进入Task,asnyc的领地,等待着,但我仍然需要能够使用类似POSTMan的方式直接测试Webapi的调用。
EDIT 2 以下变化的两个工作...
[AllowAnonymous]
[Route("getNotifications")]
[AcceptVerbs("Get", "Post")]
public Task<List<UserNotifications>> GetNotifications()
{
var userNotList = Task.Run(
() => new List<UserNotifications>{
new UserNotifications()
{
UserId = new Guid(),
MessageText = "Message 1",
MessageTime = DateTime.Now,
Status = true,
Subject = "new message 1"
},
new UserNotifications()
{
UserId = new Guid(),
MessageText = "Message 2",
MessageTime = DateTime.Now,
Status = true,
Subject = "new message 2"
},
new UserNotifications()
{
UserId = new Guid(),
MessageText = "Message 3",
MessageTime = DateTime.Now,
Status = true,
Subject = "new message 3"
}
});
return userNotList;
}
[AllowAnonymous]
[Route("getNotifications")]
[AcceptVerbs("Get", "Post")]
public async Task<List<UserNotifications>> GetNotifications()
{
var userNotList = Task.Run(
() => new List<UserNotifications>{
new UserNotifications()
{
UserId = new Guid(),
MessageText = "Message 1",
MessageTime = DateTime.Now,
Status = true,
Subject = "new message 1"
},
new UserNotifications()
{
UserId = new Guid(),
MessageText = "Message 2",
MessageTime = DateTime.Now,
Status = true,
Subject = "new message 2"
},
new UserNotifications()
{
UserId = new Guid(),
MessageText = "Message 3",
MessageTime = DateTime.Now,
Status = true,
Subject = "new message 3"
}
});
return await userNotList;
}
尝试“return await userNotList;” – Ishtiaq
...也许使方法'async'。那么它应该工作。 –
你究竟在做什么?如果你有(同步)数据要返回,只需同步返回(不包含在任务中)。 –