在ASP.NET MVC 4应用程序中,LocalPasswordModel类(在Models\AccountModels.cs中)如下所示:
public class LocalPasswordModel
{
[Required]
[DataType(DataType.Password)]
[Display(Name = "Current password")]
public string OldPassword { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "New password")]
public string NewPassword { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm new password")]
[Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
上面的代码在ErrorMessage字符串中包含两个替换参数:
ErrorMessage = "The {0} must …
Run Code Online (Sandbox Code Playgroud) 这必须很简单,但我会瞎眼睛试图找到答案.控制器操作如何获取对Owin管道中存储的每请求ApplicationDbContext的引用?
编辑:好的,我想我越来越近......或者可能不是......我所有的谷歌搜索似乎都引出了这篇博文,其中包括:
var dbContext = context.Get<ApplicationDbContext>();
Run Code Online (Sandbox Code Playgroud)
上下文显然是一个实例Microsoft.Owin.IOwinContext
.所以我尝试过:
var db = HttpContext.GetOwinContext().Get<ApplicationDbContext>();
Run Code Online (Sandbox Code Playgroud)
但该Get<T>
方法需要一个string key
参数.:(
在我使用Forms Authentication(通过SimpleMembership)的ASP.NET MVC应用程序中,如何删除用户/帐户?
WebSecurity类不公开DeleteUser.在云雀上,我试过:
WebSecurity.InitializeDatabaseConnection(
"MyDbConnection", "Users", "Id", "UserName", autoCreateTables: true);
new SimpleMembershipProvider().DeleteUser(userName, true);
Run Code Online (Sandbox Code Playgroud)
但是抱怨说我还没有初始化SimpleMembership提供商.无论如何,我非常感谢一些示例代码,它们展示了如何删除用户.谢谢!
短发
我想阻止多个表单提交,但我需要将submit元素的值发回服务器(以便我知道用户点击了哪个按钮).
大多数关于抑制多个表单提交的Internet Wisdom似乎都涉及在表单提交期间禁用提交按钮.这样可以防止第二次单击该按钮,但也会阻止其过帐.
我找到了一些隐藏提交按钮的JS代码示例,它允许发布它们的值.但是这些例子都用某种"处理......"消息取代了(现在隐藏的)按钮.我真的想要一个解决方案,向用户显示一个禁用按钮,但仍然发布按钮值.
我应该补充一点,我更喜欢一种适用于大多数形式的标准HTML的解决方案.没有神奇的IFrame,隐藏字段,id或类名等等.我想要一个JS函数,我可以藏在库中,并引用我现有的所有表单来启用这个新行为.
(我有一个解决方案,我将作为答案发布.但我不得不提出问题,以遵守SO的禅宗.)
我正在尝试构建一个简单的 ASP.Net Core 2.2 Web 应用程序,允许 AzureAD 作为“外部提供商”。我在 Visual Studio 2019 中执行此操作。
作为一个超级简单的演示项目,我首先创建一个使用 Azure AD 作为登录提供程序的新项目:
这将创建一个 Web 应用程序,设置为在所有页面上强制执行用户身份验证。当我运行该应用程序时,它会转到 Azure AD 并让我登录,然后再导航到该/home
页面。
回想一下,我说过我想将 Azure AD 添加为外部提供商。所以我在以下位置找到了这一行Startup.cs
:
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
Run Code Online (Sandbox Code Playgroud)
我删除了默认的身份验证方案以防止自动登录,如下所示:
services.AddAuthentication()
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
Run Code Online (Sandbox Code Playgroud)
现在,当我运行该应用程序时,它会导航到该Login
页面,并提供一个蓝色大按钮,让我可以使用 Azure Active Directory 登录。但点击该按钮不会让我登录。
因此,我搭建了身份页面,并在ExternalLogin
GET 例程处设置了一个断点。果然,点击蓝色大按钮就可以找到那里。单步执行代码,我看到对返回 null 的调用_signInManager.GetExternalLoginInfoAsync()
。
我被困住了。显然,(未记录的)配置魔法没有正确设置某些内容来满足对GetExternalLoginInfoAsync
.
c# azure asp.net-identity azure-active-directory asp.net-core-2.0
在 Visual Studio 中发布 ASP.Net Core 网站项目时,在“站点扩展选项”下,我会看到以下选项:
选择该选项有什么作用?我的项目已包含Microsoft.ApplicationInsights.AspNetCore
NuGet 包,并且通过Microsoft.Extensions.Logging.Ilogger
扩展方法进行日志记录可以按预期将日志记录信息发送到 Application Insights。
救命!我在Azure上托管了一个MVC4应用程序.我正在使用EF代码优先.这是我的情景:
我在我的生产数据库中设置了一个标志,以使网站显示"网站已禁用"消息,而不是通常的网站行为.
我向Staging实例发布了网站代码的更新.当我运行登台实例时,它将一些迁移应用于数据库架构.此时,如果因为数据库模式与生产代码不兼容而重新启用它,则生产实例将无法工作
当我测试登台实例时,我发现它无法正常工作.
现在我意识到我不知道如何撤销我应用的EF迁移,以便我可以重新启用Production实例并返回到运行Staging实例之前的状态.我知道如何使用Visual Studio中的程序包管理器控制台转到本地数据库中的特定迁移,但我不知道如何手动告诉Azure将数据库更新到特定的迁移.
在新的Identity模板代码中,登录用户的控制器代码包含在async
块中:
private async Task SignInAsync(ApplicationUser user, bool isPersistent)
{
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
AuthenticationManager.SignIn(new AuthenticationProperties()
{ IsPersistent = isPersistent },
await user.GenerateUserIdentityAsync(UserManager));
}
Run Code Online (Sandbox Code Playgroud)
但所有对SignInAsync的调用都只是await
完成任务.那么使登录代码异步的额外开销和复杂性有什么意义呢?或者,创建模板的人可能已经设想了某种异步登录方案,这是否是一个谜?
编辑:好的,似乎有点混乱我要问的是什么.我们试试这个:
为什么在对函数的所有调用都有效同步时创建异步SignInAsync函数:
await SignInAsync()
Run Code Online (Sandbox Code Playgroud)
如果调用者在执行之前做了其他工作,那么异步函数会有意义await
,但事实并非如此......
我正在将代码迁移到 DotNet Core。我需要解决对 的引用OptimisticConcurrencyException
。我需要加载什么 NuGet 包?
我有一个 DotNetCore 2.1 Web 应用程序(今天刚刚从 VS 2017 脚手架创建它)。此解决方案还包括一个 DotNet Core 2.1 库 DLL 项目。解决方案构建正常。
我有另一个(全新的)DotNetCore 2.1 Web 应用程序想要使用库 DLL。但是,当我尝试添加新引用(在“浏览”选项卡上)时,它会抱怨:
发生了一个或多个错误。
引用无效或不受支持。
有什么建议?
(奇怪的是,DLL 不像在经典 .Net 中那样直接显示在 Bin\Debug 文件夹下;它在 Bin\Debug\netcoreapp2.1 下)
asp.net-mvc ×3
azure ×3
c# ×3
.net-core ×2
asp.net-core ×2
asp.net ×1
asynchronous ×1
forms ×1
html ×1
javascript ×1
jquery ×1
owin ×1
security ×1
validation ×1