任何人都可以解释为什么ApplicationUser该类创建以下帮助函数?
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<User, int> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
Run Code Online (Sandbox Code Playgroud)
我能找到它的唯一地方是在Startup.Auth.cs文件中,作为函数的regenerateIdentity回调参数 SecurityStampValidator.OnValidateEntity:
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, User, int>(
validateInterval: TimeSpan.FromSeconds(15),
regenerateIdentityCallback: (manager, user) => user.GenerateUserIdentityAsync(manager),
getUserIdCallback: (id) => id.GetUserId<int>())
Run Code Online (Sandbox Code Playgroud)
正如你从助手那里看到的那样,它只是转身并打电话manager.CreatedIdentityAsync.有没有理由他们ApplicationUser用帮助方法"污染"这个类而不是设置OnValidateEntity如下?
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, User, int>(
validateInterval: TimeSpan.FromSeconds(15),
regenerateIdentityCallback: (manager, user) => manager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie),
getUserIdCallback: …Run Code Online (Sandbox Code Playgroud) 我最近安装了Visual Studio和SQL Server 2012.我想知道我是否遗漏了一些东西,因为Database Designer似乎没有旧版本那么友好.
在Visual Studio 2010中,当我在App_Data目录中创建SQL用户实例(.mdf)时,我能够使用与SQL Server Management Studio非常相似的漂亮界面创建表.我点击保存,一切都更新了.
在新版本中:
1)它似乎创建.sql脚本而不是自动保存我的更改
2)我必须更新TSQL窗口中的某些内容而不是属性区域(某些内容如表名称在属性中显示为灰色)
3)创建外键和索引之类的东西远不像以前那么简单.
我错过了安装中的东西吗?或者这是做事的"新方式"吗?如果是这样,为什么我的拙见认为它更复杂?
使用Visual Studio 2015社区版时,当我执行Ctrl+.快捷方式以解决缺少的依赖项时,我的光标经常消失.例如,如果我正在创建一个新的Entity Framework实体,并希望将该[Required]属性添加到我的某个属性中:
[Required].该属性有一个红色波浪形下划线.Ctrl+.以显示建议的导入using System.ComponentModel.DataAnnotations使用箭头键选择选项Enter选择它并导入using语句有时我可以继续编码而没有任何问题.但大多数时候我的光标消失了,我必须单击代码编辑器才能恢复光标.
它发生在使用Windows 7,Windows 8.1或Windows 10的几台不同计算机上.我尝试将我的VS2015配置重置为默认值,但似乎没有帮助.我能想到的另一件可能值得一提的是我使用的是Dark主题.
还有其他人经历过这个吗?是否有设置更改以便编辑器保持焦点,或键盘快捷键以使光标恢复?使用鼠标并不是世界末日,但我从来没有在2013年这样做,所以它有点烦人.
我创建了一些主题HtmlHelper扩展,用于获取主题目录中的.css和.js文件,并将它们动态注册为bundle.但是,如果主题仅包含.min.js文件,则Scripts.Render输出在调试模式下为空.
在调试模式下,有没有办法在Scripts.Render的输出中包含*.min.js文件?
我只是好奇为什么ASP.net MVC网站模板使用ASP.net身份的异步方法?它们似乎没有做任何可以从使用异步方法中受益的东西.
例如,为什么使用:
IdentityResult result =
await UserManager.RemoveLoginAsync(User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey));
Run Code Online (Sandbox Code Playgroud)
代替:
IdentityResult result =
UserManager.RemoveLogin(User.Identity.GetUserId(), new UserLoginInfo(loginProvider, providerKey));
Run Code Online (Sandbox Code Playgroud)
他们不是在做同样的事情吗?在这两种情况下,您都在等待IdentityResult前一行到下一行代码,对吗?
我正在编写一个新的C#Web表单应用程序,很有可能它将部署在仅支持.Net 2.0的Web服务器上.
我希望能够使用像Dapper或PetaPoco这样的东西进行数据访问和操作,但看起来它们都有.Net 3.0或更高版本的要求.
是否有适用于.Net 2.0的类似替代方案?
我知道SubSonic和NHibernate,但我真的只是想查询数据库并快速将结果填入POCO.
谢谢!
使用基于OWIN cookie的身份验证而不是基于表单身份验证基于cookie的身份验证来开发MVC Web应用程序有什么主要优势吗?
我问的原因是我不会使用任何基于实体框架的钩子进行OWIN身份验证.我已经基于Forms身份验证构建了多年的应用程序,并且能够为管理员(更快的超时),匿名用户和注册用户创建不同的身份验证令牌.使用票证的UserData部分,我能够实现通用注销,存储自定义属性等.
OWIN的一个优点可能是可测试性,但我不确定.ClaimsIdentity很好,因为我可以轻松地存储和访问自定义字段,而无需将属性序列化/反序列化为UserData.其他我应该考虑的事情?
我正在考虑让最终用户能够将部分视图(控件)放入存储在数据库中的信息中.有没有办法执行我从数据库中获取的字符串作为Razor视图的一部分?
是否可以在Windows Server 2012上安装ASP.net 1.1?有一些遗留应用程序,目前移植过于耗时/昂贵.
我能够在Windows Server 2008上经历一个复杂的过程,在那里我组装了一个安装程序包.不确定在Server 2012上是否可以使用相同的功能.
有人有这方面的工作经验吗?
我已经在网上搜索了使用Entity Framework实现存储库/工作单元模式的良好实现.我遇到的一切要么在抽象中的某个点紧密耦合,要么假设DbContext工作单元和存储库使用的是共享的,并且应该为整个HTTP请求(每个请求的实例通过依赖注入)生效.
例如,假设您正在从服务层使用存储库,则服务构造函数可能如下所示:
public DirectoryService(IUnitOfWork unitOfWork, ICountryRepository countryRepo, IProvinceRepository provinceRepo)
{
/* set member variables... */
}
Run Code Online (Sandbox Code Playgroud)
工作单元的构造函数可能如下所示:
public UnitOfWork(IDbContext context)
{
_context = context;
}
Run Code Online (Sandbox Code Playgroud)
并且存储库构造函数可能如下所示:
CountryRepository(IDbContext context)
{
_context = context;
}
Run Code Online (Sandbox Code Playgroud)
此解决方案盲目地假设依赖注入正在设置工作单元和存储库以使用每个请求的实例共享相同的IDbContext.这真的是一个安全的假设吗?
如果您对每个请求的实例使用依赖注入,则会将相同的IDbContext注入到多个工作单元中.工作单位不再是原子的,是吗?我可能在一个服务中有待更改,然后在另一个服务中提交,因为上下文在多个工作单元之间共享.
对我而言,为IDbContextFactory每个工作单元设置一个新的数据库上下文似乎更有意义.
public interface IDbContextFactory
{
IDbContext OpenContext();
}
public class UnitOfWork
{
private IDbContextFactory _factory;
private IDbContext _context;
UnitOfWork(IDbContextFactory factory)
{
_factory = factory;
}
internal IDbContext Context
{
get { return _context ?? (_context = _factory.OpenContext()); } …Run Code Online (Sandbox Code Playgroud) c# ×6
asp.net-mvc ×4
asp.net ×3
owin ×2
asp.net-1.1 ×1
asp.net-2.0 ×1
orm ×1
razor ×1
sql ×1
sql-server ×1
unit-of-work ×1