我已经在Visual Studio 2019中构建了一个小型ASP.NET Web应用程序,从ASP.NET MVC Web应用程序项目模板开始,该项目使用默认的个人用户帐户进行身份验证。我正在接近开发的结束,并且在运行该应用程序时失去了登录功能的某个地方,而无需通过CTRL-F5附加调试器:启动而无需调试。使用通过F5附加的调试器运行应用程序:启动调试和附加调试器的任何其他运行方法允许应用程序按预期行事。
在启动时,Web应用程序要求用户登录。成功登录后,预期的行为是重定向到主页,但目前成功的登录仅再次显示登录页面,我相信该应用程序不在't将用户识别为已验证。
我开始使用旧的干净,重新编译和重建来调试,那里没有任何运气。在登录方法的成功语句中添加了一个投掷语句,并验证了登录尝试确实成功。此投掷语句的登录方法(位于AccountController.vb
中(如下所示。尝试中的符号确实触发了SignIn.Success
情况。
' POST: /Account/Login
<HttpPost>
<AllowAnonymous>
<ValidateAntiForgeryToken>
Public Async Function Login(model As LoginViewModel, returnUrl As String) As Task(Of ActionResult)
If Not ModelState.IsValid Then
Return View(model)
End If
' This doesn't count login failures towards account lockout
' To enable password failures to trigger account lockout, change to shouldLockout := True
Dim result = Await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout := False)
Select Case result
Case SignInStatus.Success
Throw New System.Exception("Sign In Succeeded") 'Throws both with and without the debugger attached
Return RedirectToLocal(returnUrl)
Case SignInStatus.LockedOut
Return View("Lockout")
Case SignInStatus.RequiresVerification
Return RedirectToAction("SendCode", New With {
returnUrl,
model.RememberMe
})
Case Else
ModelState.AddModelError("", "Invalid login attempt.")
Return View(model)
End Select
End Function
奇怪的是,即使我删除了项目中仅有的两个<Authorize>
属性,我认为无法登录,我认为这会消除所有登录屏幕。(它们连接到AccountController
和ManagerController
类,其位置与我过去使用相同项目模板完成的其他项目相匹配(
我能找到的唯一相关的互联网资源之一就是这样的问题。我既构建和部署到targetFramework 4.7.2,我的web.config文件是由项目模板生成的,但数据库连接字符串除了数据库连接字符串外,我将其包含在内,以防万一某人发现某些问题。
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=my secret token" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=very secret connection string"
providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
<system.web>
<authentication mode="None" />
<compilation debug="true" targetFramework="4.7.2" />
<httpRuntime targetFramework="4.7.2" />
<roleManager enabled="true" defaultProvider="MySqlRoleProvider">
<providers>
<add name="MySqlRoleProvider"
type="System.Web.Security.SqlRoleProvider"
applicationName="RFIDDataEntry"
connectionStringName="DefaultConnection"/>
</providers>
</roleManager>
</system.web>
<system.webServer>
<modules>
<remove name="FormsAuthentication" />
</modules>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
....
</assemblyBinding>
</runtime>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE="Web" /optionInfer+" />
</compilers>
</system.codedom>
</configuration>
tldr:我的VB.NET Web应用程序在不附加调试器的情况下运行应用程序时未识别用户,即使登录尝试成功。
我最近几天也面临着同样的问题。我的浏览器是Edge开发人员。删除.vs文件夹后,问题持续存在。然后,我从浏览器和VOILA中删除所有缓存,解决问题。
我能够通过删除 .vs 文件夹来解决此问题。