Asp.net MVC – 如何哈希密码

如何将用户输入(密码)哈希到数据库,然后在登录期间读取哈希密码? 我相信解决方案是在注册时散列密码,其中密码在db中保存为散列。 登录后,它应该取消哈希并将其密码与用户密码输入进行比较。 但我不知道该怎么做。 我允许密码在db中具有nvarchar(MAX) ,因为散列密码通常很长。 [Required] [StringLength(MAX, MinimumLength = 3, ErrorMessage = “min 3, max 50 letters”)] public string Password { get; set; } 寄存器: [HttpPost] public ActionResult Register(User user) { if (ModelState.IsValid) { var u = new User { UserName = user.UserName, Password = user.Password }; db.Users.Add(u); db.SaveChanges(); return RedirectToAction(“Login”); } }return View(); […]

使用.net成员资格提供程序进行编程登录

我正在尝试对测试中需要当前登录用户的一段代码进行unit testing。 使用.Net 2.0成员资格提供程序,如何以编程方式以此用户身份登录此测试?

HttpWebRequests在后续调用时失败

我知道这是一个模糊的问题,特别是因为我没有提供任何代码,但我正在开发一个.Net 2.0应用程序,我们有一个WebRequest,它将数据发布到内部构建的API。 奇怪的事情发生在我们的第3个(并且总是第3个)后续请求中,该请求在请求的GetRequestStream()方法中失败。 第一次和第二次被叫,一切都很好。 在第三次,它挂了一点,最终超时。 内部的其他应用程序正在调用API,因此我们知道它不是服务器端或网络问题。 我们尝试过几台机器 – 所有机器都有同样的问题。 有没有人曾经遇到过这个问题,或者有没有人对如何调试有任何不满(因为响应对象没有任何东西,或者至少没什么用处)。

我可以限制通用堆栈的深度吗?

是否有内置的方法来限制System.Collection.Generics.Stack的深度? 因此,如果您处于最大容量,推送新元素将删除堆栈的底部? 我知道我可以通过转换为数组并重建堆栈来实现它,但我想可能已经有了一个方法。 编辑:我写了一个扩展方法: public static void Trim (this Stack stack, int trimCount) { if (stack.Count <= trimCount) return; stack = new Stack ( stack .ToArray() .Take(trimCount) ); } 因此,它在修剪时返回一个新的堆栈,但不是不可变的function方式=) 这样做的原因是我在堆栈中存储应用程序的撤消步骤,我只想存储有限数量的步骤。

如何以编程方式控制Windows 7混音器?

Windows 7具有每个应用程序的音量控制,可让您单独静音应用程序。 如何从控制台应用程序中静音和取消静音应用程序?

在WP7中单击时如何更改按钮的颜色?

在WP7中,只要单击一个按钮,按钮的背景就会变为白色,表示单击该按钮并在释放鼠标按钮时变得正常。但是我想将按钮选择的颜色从白色更改为橙​​色。我怎么能点到它?

如何在Windows8应用程序中向HttpWebRequest添加标头?

我正在开发C#\ XAML metro-ui应用程序。 我想调用一些服务并为此使用HttpWebRequest 。 HttpWebRequest先前实现包含ContentLength和UserAgent属性。 但WinRT的实现没有它。 我试图使用这篇文章中描述的方法。 它适用于UserAgent但不适用于ContentLength 。 我试过设置Headers request.Headers[“Content-length”] = Length; request.Headers[“User-agent”] = UserAgent; 但收到exception“必须使用适当的属性或方法修改’Content-length’标头。” Hot是否可以在WinRT中实现HttpWebRequest中的Headers设置?

foreach和list.ForEach()之间的闭包有何不同?

考虑这段代码。 var values = new List {123, 432, 768}; var funcs = new List<Func>(); values.ForEach(v=>funcs.Add(()=>v)); funcs.ForEach(f=>Console.WriteLine(f()));//prints 123,432,768 funcs.Clear(); foreach (var v1 in values) { funcs.Add(()=>v1); } foreach (var func in funcs) { Console.WriteLine(func()); //prints 768,768,768 } 我知道第二个foreach打印768次3次因为lambda捕获的闭包变量。 为什么在第一种情况下不会发生? foreach关键字与Foreach方法有何不同? 是不是因为当我做值时,表达式被评估values.ForEach

本地化Windows Phone 8“应用程序标题”和“平铺标题”字符串

我有一个简单的Windows Phone 8(WP8)应用程序,我通过修改AppResources.resx本地化来创建西class牙语版本。 问题是“应用程序标题”和WMAppManifest.xml上的“平铺标题”仍然是默认语言(英语)。 我似乎无法通过WMAppManifest.xml或AppResources.resx本地化Application Title和Tile Title。 我发现并试图按照说明操作: http : //msdn.microsoft.com/en-US/library/windowsphone/develop/ff967550(v = vs.105).aspx 我看到的是:1。WP8应用程序列为文件路径’@C:\’。 2. WP8应用程序标题现在显示为’@ AppResLib.dll,-100’。 3. WP8 Tile Title现在显示为’@ AppResLib.dll,-200’。 显然,WMAppManifest.xml中“应用程序标题”和“平铺标题”的值未被解释。 我可以将它们解释为正确的本地化值吗? 是否有另一种方式或WP8的新指南(我已向MS BTW提供了反馈)? 仅供参考,我还查看了此处列出的文章: http : //msdn.microsoft.com/en-US/library/windowsphone/develop/ff637522(v = vs.105).aspx 任何帮助非常感谢!

查找Selenium WebDriver启动的浏览器进程的PID

在C#中我启动了一个浏览器进行测试,我想得到PID,这样在我的winforms应用程序中我可以杀死所有剩余的ghost进程 driver = new FirefoxDriver(); 我怎样才能获得PID?