将用户更改保存到数据库时遇到问题,例如更改人员姓名.我正在使用IdentityModel,它是使用个人身份验证在新的VS2013 Web项目中自动创建的.遗憾的是,除了更改角色之外,模板不允许您更改任何用户信息.我通过谷歌环顾四周,我找不到多少.任何人使用基本身份代码实现更新?
这是我发现的最接近的事情:
我没有成功合并默认模板.我本周刚刚开始使用Identity,所以可能是我缺乏理解这就是问题所在.
var updatedUser = new ApplicationUser
{
Id = model.UserId,
UserName = model.UserName,
CustomerId = model.CustomerId,
Email = model.EmailAddress,
FirstName = model.FirstName,
LastName = model.LastName,
PhoneNumber = model.PhoneNumber,
};
...
var result = await UserManager.UpdateAsync(updatedUser);
Run Code Online (Sandbox Code Playgroud)
我的UserManager是这样创建的:
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
Run Code Online (Sandbox Code Playgroud)
我在浏览器中收到以下错误:
附加"ApplicationUser"类型的实体失败,因为同一类型的另一个实体已具有相同的主键值.如果图中的任何实体具有冲突的键值,则在使用"附加"方法或将实体的状态设置为"未更改"或"已修改"时,可能会发生这种情况.这可能是因为某些实体是新的并且尚未收到数据库生成的键值.在这种情况下,使用"添加"方法或"已添加"实体状态来跟踪图表,然后根据需要将非新实体的状态设置为"未更改"或"已修改"
谢谢
我有一个奇怪的问题.我在解决方案中有多个项目.其中一个是WebAPI,它记录得很好.另一个是MVC管理站点,这个不会登录.这是我尝试过的.
我的日志代码:
var log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
log.Info("Some log message");
Run Code Online (Sandbox Code Playgroud)
在assemblyInfo中,我尝试了以下各项......
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "logging.config", Watch = true)]
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "C:\\full_path\\logging.config", Watch = true)]
Run Code Online (Sandbox Code Playgroud)
在Global.asax application_start中我尝试了以下(删除assemblyInfo行)
log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo("Logging.config"));
var log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
log.Info("Application starting");
Run Code Online (Sandbox Code Playgroud)
这也不会创建日志.我可以创建一个的方法是使用global.asax中的代码和logging.config的完整路径.
我很困惑,因为webapi只使用只有相对路径的assemblyInfo.我还使用AssemblyInfo解决方案(相对路径)制作了带有MVC项目的示例虚拟解决方案,并且它也在那里工作.
有任何想法吗?
更新 - 发现问题
我必须在Application_Start中设置配置文件观察器:
log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(AppDomain.CurrentDomain.BaseDirectory + "logging.config"));
Run Code Online (Sandbox Code Playgroud)
事实证明,DotNetOpenAuth.Core.dll使用log4net,并且使用AssemblyInfo解决方案无法正常工作.我在这个博客中找到了详细信息:http://hanskindberg.wordpress.com/2013/04/07/log4net-configuration/
谢谢