我在VS 2017(社区v15.6.6)中创建了一个新的ASP.NET Core 2.0 Web应用程序项目,在新项目向导中,我选择了Web应用程序+身份验证:个人用户帐户。 我在PM中运行了Update-Database来创建db。 然后我在IIS Express中运行VS中的应用程序,我注册了一个新用户并登录。一切正常。
然后我停止了应用程序并在IIS Express中运行它,但我使用了在launchSettings.json中配置的第二个启动配置文件:
"profiles": {
"TestCoreWebApp": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:63090/"
}
启动应用程序并使用主页打开Web浏览器。 现在,当我尝试登录时,它不起作用。它以http 400错误结束。
在输出中,我看到以下错误:
Microsoft.AspNetCore.Antiforgery.AntiforgeryValidationException: The required antiforgery cookie ".AspNetCore.Antiforgery.wRFSYju6cwY" is not present.
at Microsoft.AspNetCore.Antiforgery.Internal.DefaultAntiforgery.<ValidateRequestAsync>d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.AspNetCore.Mvc.ViewFeatures.Internal.ValidateAntiforgeryTokenAuthorizationFilter.<OnAuthorizationAsync>d__3.MoveNext()
任何人都可以解释为什么它与IIS Express配置文件中的工作方式不同?这是一个错误吗?
IIS Express配置文件在HTTPS上运行,但另一个配置文件在HTTP上运行。这种差异是否会在所描述的行为中起作用?
非常感谢。 菲利普
答案 0 :(得分:0)
我也在同一个版本中创建了相同的项目但是我没有创建数据库,因为当您添加新用户时,实体框架会检查并创建数据库
尝试创建新用户,最近EF创建数据库。
答案 1 :(得分:0)
使用带有ASP Net Core 2.0的Identity Server 4 /身份管理项目和带有ASP并运行IIS的Asp Net Core 2.0 API项目时,我遇到了类似的问题。
对于开发环境,我更改为不使用SSL并使用Kestrel的情况下运行,并显示错误“必需的防伪cookie .AspNetCore.Antiforgery.wRFSYju6cwY”。
当我在所有浏览器中清理Cookies时,一切都开始正常运行,希望对您有所帮助。
答案 2 :(得分:0)
尝试将@Html.AntiForgeryToken()
插入到登录视图(在表单内)。
答案 3 :(得分:0)
这使我绊倒了很多次,因为我通常从一个空的Web项目模板开始。
您可能会丢失fragment("?->'google_place_ids' @> ?", b.metadata, ^"[\"#{google_place_id}\"]")
文件或其中的以下行(这将启用内置标签帮助程序,即自动注入的csrf):
_ViewImports.cshtml