没有密码的ASP.NET MVC Identity登录

我被赋予修改ASP.NET MVC应用程序的任务,以便冲浪到myurl?username = xxxxxx将自动登录用户xxxxxx,而不需要密码。 我已经非常清楚地表明,对于许多与安全相关的原因和情景来说,这是一个可怕的想法,但负责人是有决心的。 该网站不会公开。 那么:有没有办法在没有密码的情况下登录,例如扩展Microsoft.AspNet.Identity.UserManager并修改AccountController? 一些代码: var user = await _userManager.FindAsync(model.UserName, model.Password); if (user != null && IsAllowedToLoginIntoTheCurrentSite(user)) { user = _genericRepository.LoadById(user.Id); if (user.Active) { await SignInAsync(user, model.RememberMe); _userManager包含Microsoft.AspNet.Identity.UserManager的实例。 和SignInAsync(): private async Task SignInAsync(User user, bool isPersistent) { AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie); var identity = await _userManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie); if (user.UserGroupId.IsSet()) user.UserGroup = await _userManager.Load(user.UserGroupId); //adding claims […]

async /等待不同的线程ID

我最近正在阅读关于异步/等待的事情,我很惊讶我正在阅读的许多文章/post说明在使用异步等待时没有创建新线程( 示例 )。 我创建了一个简单的控制台应用程序来测试它 class Program { static void Main(string[] args) { Console.WriteLine(“Main: ” + Thread.CurrentThread.ManagedThreadId); MainAsync(args).Wait(); Console.WriteLine(“Main End: ” + Thread.CurrentThread.ManagedThreadId); Console.ReadKey(); } static async Task MainAsync(string[] args) { Console.WriteLine(“Main Async: ” + Thread.CurrentThread.ManagedThreadId); await thisIsAsync(); } private static async Task thisIsAsync() { Console.WriteLine(“thisIsAsyncStart: ” + Thread.CurrentThread.ManagedThreadId); await Task.Delay(1); Console.WriteLine(“thisIsAsyncEnd: ” + Thread.CurrentThread.ManagedThreadId); } […]

如何在Windows应用程序中为当前登录的用户存储用户设置(用户名,密码)

现在我的团队正在开发一个涉及Windows应用程序(C#)的项目。 该应用程序可以选择在当前登录用户的客户端计算机中保存用户名和密码。 用户无需输入用户名和密码即可启动应用程序。 请检查我的要求的快照。 请提出一个很好的例子或参考。 替代文字http://sofzh.miximages.com/c%23/www.freeimagehosting.net

参数的最佳实践:IEnumerable与IList对比IReadOnlyCollection

当得到延迟执行中的值时,我会从方法返回 IEnumerable时得到。 返回一个List或IList应该只是在修改结果的时候,否则我会返回一个IReadOnlyCollection ,所以调用者知道他得到的不是用于修改的(这使得该方法甚至可以重用对象)来自其他来电者)。 但是,在参数输入方面,我有点不太清楚。 我可以采用IEnumerable ,但如果我需要多次枚举怎么办? 俗话说“ 你发送的东西要保守,你接受的东西要自由 ”,建议拿一个IEnumerable是好的,但我不太确定。 例如,如果以下IEnumerable参数中没有元素,则可以通过首先检查.Any()来保存此方法中的大量工作,这需要在此之前使用ToList()以避免枚举两次 。 public IEnumerable RemoveHandledForDate(IEnumerable data, DateTime dateTime) { var dataList = data.ToList(); if (!dataList.Any()) { return dataList; } var handledDataIds = new HashSet( GetHandledDataForDate(dateTime) // Expensive database operation .Select(d => d.DataId) ); return dataList.Where(d => !handledDataIds.Contains(d.DataId)); } 所以我想知道什么是最好的签名,在这里? 一种可能性是IList data ,但接受列表表明您计划修改它,这是不正确的 – 此方法不会触及原始列表,因此IReadOnlyCollection似乎更好。 但是IReadOnlyCollection强制调用者每次执行ToList().AsReadOnly()都会变得有点难看,即使使用自定义扩展方法.AsReadOnlyCollection […]

如何从匿名类型获取属性的值?

我有一个由Linq查询填充的数据网格。 当datagrid中的焦点行发生更改时,我需要设置一个等于该对象中某个属性的变量。 我试过了… var selectedObject = view.GetRow(rowHandle); _selectedId = selectedObject.Id; …但编译器根本不关心这个(“嵌入式语句不能是声明或标注语句”)。 看起来这个属性应该很容易访问。 在运行时检查对象显示了我期望的所有属性,我只是不知道如何访问它们。 如何访问匿名对象的属性? 编辑澄清: 我碰巧使用DevExpress XtraGrid控件。 我用Linq查询加载了这个控件,该查询由几个不同的对象组成,因此使得数据不符合我已经拥有的任何一个类(即,我无法将其转换为任何类)。 我正在使用.NET 3.5。 当我查看view.GetRow(rowHandle)方法的结果时,我得到一个如下所示的匿名类型: { ClientId = 7, ClientName = “ACME Inc.”, Jobs = 5 } 我的目标是从这个匿名类型获取ClientId,以便我可以做其他事情(例如在其中加载具有该客户端记录的表单)。 我在早期的答案中尝试了一些建议,但无法达到我可以获得此ClientId的程度。

IEditableObject和IRevertibleChangeTracking有什么区别?

IEditableObject和IRevertibleChangeTracking (两者都来自System.ComponentModel命名空间)有什么区别? 看起来第一个支持显式事务,而第二个支持更隐式 – 但最终结果是相同的。 我应该如何在代码中实现它? 目前我在BeginEdit中什么都不做,并分别在EndEdit和CancelEdit中调用RejectChanges和AcceptChanges 。 我的问题是,这也将接受在B​​eginEdit之前所做的更改。 这真的是微软想要的,还是我试图实现两个互斥的接口?

OData错误:URI中指定的查询无效。 该属性不能在查询选项中使用

我正试图让OData端点启动并正常工作,我遇到了这个错误,即使谷歌也没什么可说的。 我已经创建了一个Entity Framework EDMX上下文(数据库优先),让设计者从中生成2个模型。 一切都运行正常,除了$filter查询失败。 我可以做得很好: http://localhost:27164/Projects(6587660) 它检索主ID为6587660的项目。 但是任何$filter请求都是这样的: http://localhost:27164/Projects?$filter=ProjectID eq 6587660 将失败并出现以下错误: URI中指定的查询无效。 属性“ProjectID”不能在$ filter查询选项中使用。 我也尝试过查询其他属性,字符串属性。 同样的错误。 我已经检查过EF生成的模型在属性上没有任何属性,但它们没有。 这是我在WebApiConfig.cs模块中的Register方法: using System.Web.OData.Builder; using System.Web.OData.Extensions; public static void Register(HttpConfiguration config) { // Web API configuration and services // Configure Web API to use only bearer token authentication. config.SuppressDefaultHostAuthentication(); config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); ODataModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet(“Projects”); […]

使用户控件显示在窗体边界之外

我决定重新实现日期时间选择器,因为标准的日期时间选择器不可为空。 用户想要以空白字段开头并键入(而不是选择)日期。 我已经创建了一个用户控件来执行此操作,但如果用户控件靠近窗体的边缘,则它将在窗体边界上被切断。 标准日期时间选择器不会遇到此问题。 这是一张显示问题的图片。 我的用户控件在左侧,标准的datetimepicker在右侧: 替代文字http://img50.imageshack.us/img50/9104/datetimepickervu6.jpg 如您所见,标准控件将显示在表单和应用程序边界上。 如何让我的控制中的月份选择器做同样的事情? 谢谢!

从VS2010调试在远程IIS服务器上运行的ASP.NET应用程序

只是想知道是否有人能指出我在正确的方向? 我正在尝试调试已部署的 Web应用程序,似乎无法使附件工作。 这是场景: VS2010安装在我的机器上 – 包含所有源代码。 我的机器上的IE8浏览到生产IIS服务器上的ASP.NET站点(生产站点上的FWIW .pdb文件。) 当我将调试器连接到IE会话,并继续浏览网站时,没有任何断点被击中……所以有效地我不认为我真的在调试网站! 我猜我需要某种远程调试设置? 如果是这种情况,如果有人知道任何URL的帮助,将非常感谢! 提前致谢! 吉姆

如何为每个AppDomain配置一次AutoMapper

我目前的项目包括域模型,MVC Web应用程序和unit testing的程序集。 如何设置AutoMapper配置,以便所有程序集引用相同的配置? 我猜我可以在Global.asax中为web应用程序添加项目,但是如何在unit testing中使用它? 此外,如果配置在Global.asax中,域模型是否会选择地图? 非常感谢, KevDog。