我正在使用asp.net 5和实体框架7创建Web应用程序,并且在使User.Identity
工作时遇到一些问题。在documentation中,它表示位于名称空间User.Identity.Core
中。当我通过nuget安装它时,它会找到方法。但是,我与UserManager
发生冲突,因为它说它同时存在于User.Identity.Core
和User.Identity.EntityFramework
中。如果我卸载User.Identity.EntityFramework
,则不允许在用户模型中从IdentityUser
继承。我需要GetUserId
才能获取当前登录的旅馆用户...我也尝试使用
System.Web.HttpContext.Current.User.Identity.GetUserId();
但是似乎有一个类似的问题,它说
Current
在HttpContext
中不存在。有人知道解决方案吗?
使用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之一是关于GetUsername
,GetUserId
和IsSignedIn
扩展方法的移动。
这些扩展方法引用的声明可以通过以下方式配置
IdentityOptions目前尚未受到
扩展方法,始终引用内置
ClaimTypes.NameIdentifier /名称。
这些方法已被解决:
User.GetUserId => UserManager.GetUserId(User)
User.GetUserName => UserManager.GetUserName(User)
User.IsSignedIn => SignInManager.IsSignedIn(User)
编辑:
我只是注意到它是针对RC2的,因此除非您使用每晚构建的供稿,否则可能还不适用于您。
您的问题可能是由于选择了错误的软件包名称引起的,因为它们在过去曾被重命名过六次。
EntityFramework.MicrosoftSqlServer
和Microsoft.AspNet.Identity.EntityFramework
应该适合您。 (使用RC2,他们又重新命名为Microsoft.EntityFrameworkCore.*
和Microsoft.AspNetCore.*
,所有版本都重置为1.0)关于c# - getUserId在rc1.final的User.Identity中不存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35357728/