我正在使用asp.net 5和实体框架7创建Web应用程序,并且在使User.Identity工作时遇到一些问题。在documentation中,它表示位于名称空间User.Identity.Core中。当我通过nuget安装它时,它会找到方法。但是,我与UserManager发生冲突,因为它说它同时存在于User.Identity.CoreUser.Identity.EntityFramework中。如果我卸载User.Identity.EntityFramework,则不允许在用户模型中从IdentityUser继承。我需要GetUserId才能获取当前登录的旅馆用户...我也尝试使用

System.Web.HttpContext.Current.User.Identity.GetUserId();


但是似乎有一个类似的问题,它说CurrentHttpContext中不存在。

有人知道解决方案吗?

使用project.json更新:

{
  "userSecretsId": "aspnet5-FrkKantine-1a8100b9-6fce-44b4-ac9d-6038ecf705f6",
  "version": "1.0.0-*",
  "compilationOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "EntityFramework.Commands": "7.0.0-rc1-final",
    "EntityFramework.Core": "7.0.0-rc1-final",
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
    "Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final",
    "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc1-final",
    "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
    "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
    "Microsoft.AspNet.Razor": "4.0.0-rc1-final",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
    "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
    "Microsoft.Extensions.CodeGenerators.Mvc": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final"
  },

  "commands": {
    "web": "Microsoft.AspNet.Server.Kestrel",
    "ef": "EntityFramework.Commands"
  },

  "frameworks": {
    "dnx451": { },
    "dnx50": {}
  },

  "exclude": [
    "wwwroot",
    "node_modules"
  ],
  "publishExclude": [
    "**.user",
    "**.vspscc"
  ],
  "scripts": {
    "prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ]
  }
}

最佳答案

由于ASP.NET Core 1.0(以前的ASP.NET 5)仍在开发中,因此情况经常发生变化。

请检查GitHub Announcements tracker以获得ASP.NET Core 1.0版本的API更改(不过不要在此处发布问题,这完全是ASP.NET Core团队发布的公告)。

these announcements之一是关于GetUsernameGetUserIdIsSignedIn扩展方法的移动。


  这些扩展方法引用的声明可以通过以下方式配置
  IdentityOptions目前尚未受到
  扩展方法,始终引用内置
  ClaimTypes.NameIdentifier /名称。
  
  这些方法已被解决:

User.GetUserId => UserManager.GetUserId(User)
User.GetUserName => UserManager.GetUserName(User)
User.IsSignedIn => SignInManager.IsSignedIn(User)



编辑:
我只是注意到它是针对RC2的,因此除非您使用每晚构建的供稿,否则可能还不适用于您。

您的问题可能是由于选择了错误的软件包名称引起的,因为它们在过去曾被重命名过六次。

EntityFramework.MicrosoftSqlServerMicrosoft.AspNet.Identity.EntityFramework应该适合您。 (使用RC2,他们又重新命名为Microsoft.EntityFrameworkCore.*Microsoft.AspNetCore.*,所有版本都重置为1.0)

关于c# - getUserId在rc1.final的User.Identity中不存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35357728/

10-17 01:23