我想构建自定义角色。我创建了一个新类:
public class TheRoleProvider : RoleProvider
{
public override string[] GetRolesForUser(string username)
{
DataLayerAccess dal = new DataLayerAccess();
return dal.GetUserGroups(username);
}
其他方法返回
throw new NotImplementedException();
在方法GetUserGroups
的代码下面public string[] GetUserGroups(string UserName)
{
List<UserGroup> listGroup =
PostAsyncRestObject<List<UserGroup>, string>(
"http://my_server/ServiceCommon.svc/GetUserGroups",
UserName)
.Result;
List<string> strGr = new List<string>();
foreach (UserGroup ug in listGroup)
{
strGr.Add(ug.GroupName);
}
return strGr.ToArray();
}
我不明白为什么当调用“PostAsyncRestObject”时,浏览器正在等待某些东西而我无法取回结果。
如果有人能给我一些线索来解决我的问题,谢谢。
答案 0 :(得分:1)
您应await
使用async
方法(并可能将其名称更改为GetUserGroups Async ):
public async Task<string[]> GetUserGroupsAsync(string UserName)
{
List<UserGroup> listGroup = await
PostAsyncRestObject<List<UserGroup>, string>(
"http://my_server/ServiceCommon.svc/GetUserGroups",
UserName).ConfigureAwait(false);
List<string> strGr = new List<string>();
foreach (UserGroup ug in listGroup)
{
strGr.Add(ug.GroupName);
}
return strGr.ToArray();
}
另一种选择是通过调用同步方法替换对异步PostAsyncRestObject
方法的调用。你不应该像在这里一样混合异步和同步代码。