小编Abh*_*nyu的帖子

获取asp.net identity 2.0中具有指定角色的用户列表

我有一个列出角色的下拉列表框.我想获得具有该角色的用户列表.我的意思是"管理员"角色或"CanEdit"角色的用户列表.这是我的代码:

public IQueryable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser> 
  GetRolesToUsers([Control] string ddlRole)
{    
  //ddlRole returns role Id, based on this Id I want to list users

  var _db = new ApplicationDbContext();
  IQueryable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser> query = _db.Users;

  if (ddlRole != null)
  {
    //query = query.Where(e => e.Claims == ddlRole.Value);  ???????              
  }

  return query;
}
Run Code Online (Sandbox Code Playgroud)

请帮忙.

更新的代码(仍然错误)

public List<IdentityUserRole> GetRolesToUsers([Control]string ddlRole)
{

  var roleManager = 
   new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
  var users = roleManager.FindByName("Administrator").Users.ToList();
  return users;
}
Run Code Online (Sandbox Code Playgroud)

错误:当ItemType设置为"Microsoft.AspNet.Identity.EntityFramework.IdentityUser"时,Select方法必须返回"IQueryable"或"IEnumerable"或"Microsoft.AspNet.Identity.EntityFramework.IdentityUser"之一.

我尝试了各种铸件,但没有一个帮助.

更新(工作解决方案)

感谢chris544,他的想法帮助我解决了这个问题.这是工作方法: -

public List<ApplicationUser> GetRolesToUsers([Control]string ddlRole)
{
  var context = …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc asp.net-mvc-4 asp.net-identity asp.net-identity-2

29
推荐指数
3
解决办法
5万
查看次数

Azure媒体服务 - 生成新的AES加密令牌以进行播放

我从2015年开始研究MVC中的开源社区项目Azure Media Services上传和播放视频.我之前没有使用任何交付加密,所以我开始研究AES.

在Azure媒体服务团队的所有源代码/示例中,我注意到在上传内容后正在生成测试令牌,这在我的情况下也很有效.但是,下一次如何生成测试令牌以进行播放?

我的理解是,每次玩家请求播放时我们都需要令牌.从技术上讲,播放器向关键服务提供商创建请求并接收更新的令牌.

因此,为了获得更新的令牌,我尝试了几种无法解决此问题的方法,我看到错误"A ContentKey(Id ='...',Type ='EnvelopeEncryption'),其中包含已链接到此资产的相同类型" .

在此输入图像描述

这看起来像是一个有效的错误消息,因为EnvelopeEncryption类型的密钥已经添加并在上传内容后与资产相关联,并在再次请求此弹出窗口时.

下面给出的代码是从这里复制的.

    public ActionResult Index()
    {
        var model = new List<VideoViewModel>();

        var videos = db.Videos.OrderByDescending(o => o.Id).ToList();
        foreach (var video in videos)
        {
            var viewModel = new VideoViewModel();
            viewModel.Id = video.Id;
            viewModel.EncodedAssetId = video.EncodedAssetId;
            viewModel.IsEncrypted = video.IsEncrypted;
            viewModel.LocatorUri = video.LocatorUri;

            // If encrypted content, then get token to play
            if (video.IsEncrypted)
            {
                IAsset asset = GetAssetById(video.EncodedAssetId);
                IContentKey key = CreateEnvelopeTypeContentKey(asset);
                viewModel.Token = GenerateToken(key);
            } …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc azure azure-media-services

7
推荐指数
1
解决办法
684
查看次数

在实体框架中使用异步选择类型为IQueryable &lt;T&gt;的列表

我正在尝试将数据访问同步查询转换为异步查询,到目前为止,除了选择return的列表之外,我都进行了转换IQueryable<T>

到目前为止,这是我所做的:

    [Dependency]
    public SampleContext db { get; set; }

    public async System.Threading.Tasks.Task<Profile> Add(Profile item)
    {
        db.Profiles.Add(item);
        await db.SaveChangesAsync();
        return item;
    }

    public async System.Threading.Tasks.Task<Profile> Get(string id)
    {
        return await db.Profiles.AsNoTracking().Where(i => i.Id == id).FirstOrDefaultAsync();
    }

    public async System.Threading.Tasks.Task Remove(string id)
    {
        Profile item = db.Profiles.Find(id);
        item.IsDeleted = 1;
        db.Entry(item).State = EntityState.Modified;
        await db.SaveChangesAsync();
    }

    public async System.Threading.Tasks.Task<bool> Update(Profile item)
    {
        db.Set<Profile>().AddOrUpdate(item);
        await db.SaveChangesAsync();
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

上面的代码运行良好,我被困在转换这段代码:

    public IQueryable<Profile> GetAll()
    {
        return db.Profiles.AsNoTracking().Where(i => i.IsDeleted == 0); …
Run Code Online (Sandbox Code Playgroud)

c# linq lambda asynchronous entity-framework

3
推荐指数
1
解决办法
3106
查看次数

ASP.NET中的Google API中的redirect_uri_mismatch

我正在尝试使用ASP.NET Web Form在我的YouTube频道上传视频.我创建了开发人员帐户,并使用基于JavaScript的解决方案进行了测试,该解决方案需要每次登录才能上传视频.

我希望我的网站用户直接在我的频道上传视频,并且每个身份验证应该在代码后面,不应提示用户登录.为此,我写了以下课程:

public class UploadVideo
{
    public async Task Run(string filePath)
    {
        string CLIENT_ID = "1111111111111111111111.apps.googleusercontent.com";
        string CLIENT_SECRET = "234JEjkwkdfh1111";
        var youtubeService = AuthenticateOauth(CLIENT_ID, CLIENT_SECRET, "SingleUser");

        var video = new Video();
        video.Snippet = new VideoSnippet();
        video.Snippet.Title = "Default Video Title";
        video.Snippet.Description = "Default Video Description";
        video.Snippet.Tags = new string[] { "tag1", "tag2" };
        video.Snippet.CategoryId = "22"; // See https://developers.google.com/youtube/v3/docs/videoCategories/list
        video.Status = new VideoStatus();
        video.Status.PrivacyStatus = "unlisted"; // or "private" or "public"

        using (var fileStream = new …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc google-api google-api-client google-api-dotnet-client

2
推荐指数
1
解决办法
2857
查看次数