Asp.net Identity使用密码和Azure Active Directory身份validation

我正在使用Asp.net Identity(OWIN)构建ASP.NET MVC 5网站,并希望支持传统的用户名/密码身份validation以及针对Azure Active Directory的身份validation。 此应用程序无需针对Microsoft ID(Live ID),Facebook,Twitter或任何其他外部提供程序进行身份validation。 我找到的最接近的SO问题是: 如何在ASP.NET MVC上执行Azure Active Directory单点登录和表单身份validation 我查看了使用“个人用户帐户”选项以及VS 2015中的“工作和学校帐户”选项创建项目时创建的示例。我的身份validation工作正常; 只有当我尝试将它们结合起来时,我才遇到问题。 在我的Startup_Auth.cs文件中,我正在配置OWIN,如下所示: public void ConfigureAuth(IAppBuilder app) { app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType); //app.UseCookieAuthentication(new CookieAuthenticationOptions { }); app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ExternalCookie, LoginPath = new PathString(“/account/sign-in”) }); app.UseOpenIdConnectAuthentication( new OpenIdConnectAuthenticationOptions { ClientId = clientId, Authority = authority, TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters { ValidateIssuer […]

在wpf中实时更新进度条

我在进度条实时显示更新时遇到了一些麻烦。 这是我现在的代码 for (int i = 0; i < 100; i++) { progressbar1.Value = i; Thread.Sleep(100); } 但由于某种原因,当函数运行时进度条显示为空,然后在函数完成运行之前没有任何内容。 有人可以向我解释如何做到这一点? 我是C#/ WPF的新手,所以我不能100%确定如何在不同的线程上实现Dispatcher(如其他一些post所示)来解决这个问题。 为了澄清,我的程序有一个按钮,按下时,从文本框中获取值,并使用API​​检索信息,并根据它创建标签。 我希望在每行数据处理完毕后更新进度条。 这就是我现在所拥有的: private async void search(object sender, RoutedEventArgs e) { var progress = new Progress(value => progressbar1.Value = value); await Task.Run(() => { this.Dispatcher.Invoke((Action)(() => { some pre-processing before the actual for loop […]

比较对象

我有一个类,它包含一些字符串成员,一些双成员和一些数组对象。 我创建了这个类的两个对象,是否有任何最简单,有效的方法来比较这些对象并说它们相等? 有什么建议? 我知道如何编写比较函数,但这会耗费时间。

案例标签的顺序对switch语句的效率有多大影响?

考虑: if (condition1) { // Code block 1 } else { // Code block 2 } 如果我知道在大多数condition1将是true ,那么我应该将逻辑编写为编写,而不是: if (!condition1) { // Code block 2 } else { // Code block 1 } 因为我将避免jump到第二个代码块的惩罚(注意:我对汇编语言的了解有限)。 这个想法是否继续switch语句和case标签? switch (myCaseValue) { case Case1: // Code block 1 break; case Case2: // Code block 2 break; // etc. } […]

DELETE语句与具有Entity Framework的SAME TABLE REFERENCE约束冲突

我有一个带有自引用的表,其中ParentId是ID(PK)的FK。 使用EF(代码优先),我建立了如下关系: this.HasOptional(t => t.ParentValue) .WithMany(t => t.ChildValues) .HasForeignKey(t => t.ParentId); 当我尝试删除子节点及其父节点时,DELETE命令对数据库的EF问题不按我预期的顺序 – 它首先尝试删除父节点。 我意识到我在这里有几个选项(我都不喜欢): 首先删除子记录,执行完整保存/提交,然后删除父记录。 由于我的模型的复杂性和维护它的逻辑,这不是一个选项 – 不能随时发出多个提交命令。 在删除任何内容之前解散关系。 这似乎是一个更明智的解决方案,但同样,我必须在DELETE之前使用UPDATE语句发出单独的提交。 我想避免多次保存/提交调用。 在删除父记录之前,使用触发器删除子项。 但我想尽可能避免触发器及其有问题的性质。 所以问题是..有没有办法在父记录之前强制删除子项? 也许我错过了一种明确的方式告诉EF它需要在父母之前照顾这些孩子? 也许有一种方法可以指示EF按ID的降序删除? 我不知道……想法?

使用System.Drawing概述文本?

我有以下代码。 有没有简单的方法来概述我正在写的文字? var imageEncoder = Encoder.Quality; var imageEncoderParameters = new EncoderParameters(1); imageEncoderParameters.Param[0] = new EncoderParameter(imageEncoder, 100L); var productImage = GetImageFromByteArray(myViewModel.ProductImage.DatabaseFile.FileContents); var graphics = Graphics.FromImage(productImage); var font = new Font(“Segoe Script”, 24); var brush = Brushes.Orange; var container = new Rectangle(myViewModel.ContainerX, myViewModel.ContainerY, myViewModel.ContainerWidth, myViewModel.ContainerHeight); var stringFormat = new StringFormat {Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center}; graphics.DrawString(customizationText, […]

C#:更改数组中每个项的值

我想知道是否有内置的.NETfunction来根据提供的委托的结果更改数组中的每个值。 例如,如果我有一个数组{1,2,3}和一个返回每个值的平方的委托,我希望能够运行一个接受数组和委托的方法,并返回{1,4,9} 。 有这样的事情吗?

使用SqlFileStream从WCF服务返回流

我有一个WCF服务,用户可以从中请求大型数据文件(存储在启用了FileStream的SQL数据库中)。 这些文件应该流式传输,并且在发送之前不会加载到内存中。 所以我有以下方法应该返回一个由WCF服务调用的流,以便它可以将Stream返回给客户端。 public static Stream GetData(string tableName, string columnName, string primaryKeyName, Guid primaryKey) { string sqlQuery = String.Format( “SELECT {0}.PathName(), GET_FILESTREAM_TRANSACTION_CONTEXT() FROM {1} WHERE {2} = @primaryKey”, columnName, tableName, primaryKeyName); SqlFileStream stream; using (TransactionScope transactionScope = new TransactionScope()) { byte[] serverTransactionContext; string serverPath; using (SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings[“ConnString”].ToString())) { sqlConnection.Open(); using (SqlCommand sqlCommand […]

entity framework使用LEFT JOIN语句为视图返回错误的数据

我遇到了Entity Framework的奇怪行为。 EF生成的DbContext对象返回与数据库中的实际数据不同的数据。 请考虑以下数据库架构: Letter数据: Id Value LanguageId ——- ——- ———- 1 A 1 2 A 2 3 B 1 4 B 2 Language数据: Id Value ——- ——- 1 English 2 Russian 我还有以下简单的LetterLanguageView视图。 请注意,它使用LEFT JOIN子句,因为Letter.LanguageId可能为NULL : SELECT dbo.Letter.Value as Letter, dbo.Language.Value as Language FROM dbo.Letter LEFT JOIN dbo.Language ON dbo.Letter.LanguageId = dbo.Language.Id 这种观点的结果非常简单: Letter Language […]

SerializationException类型“未标记为可序列化” – 但它确实如此

在Windows窗体,.NET Framework 4.0中,我正在尝试序列化我编写的类的实例。 该类被标记为Serializable,但使用该类(显然)的forms不是。 我不想序列化表单的实例。 我想序列化我class上的数据。 我class上的所有东西都标记为Serializable,为什么我仍然得到SerializationException? (点击>>这里<<在新窗口中打开图片全尺寸) 更新: 这是我的BrazierCuttoff课程及相关部分: [Serializable()] public class BrazierCuttoff : IEquatable { private int qty; private int[] joint, pass, shift; private float mult; private BrazierPay a, b, c, d, e; public event EventHandler BrazierCuttoffChanged; public const int MAXIMUMSMALLQUANTITY = 20; EnumeratedLevel[,] eLvArray; /// /// Gets or Sets the Brazier Matrix […]