我有Forms身份验证,我需要一个自定义对象存储在HttpContext.Current.User和Thread.CurrentPrincipal中.
为了得到这个,我听PostAuthenticateRequest事件,然后从DB读取我需要存储在HttpContext.Current.User和Thread.CurrentPrincipal中的所有用户数据,然后我实例化自定义IPrincipal和IIdentity对象并将它们分配给上面位置.
问题是由于某种原因,PostAuthenticateRequest会针对单个请求多次触发..这会导致不必要的DB往返,从而影响性能.
我该如何解决这个问题?(ASP.NET MVC 2)
谢谢.
我有一个接受以下模型的action方法 - LanguagesViewModel:
public class LanguagesViewModel : ViewModelBase
{
IEnumerable<LanguageItem> Languages { get; set; }
}
public class LanguageItem
{
[Required]
public int LanguageId { get; set; }
[Required]
public int SpeakingSkillId { get; set; }
[Required]
public int WritingSkillId { get; set; }
[Required]
public int UnderstandingSkillId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我还有一个自定义模型绑定器将POST数据绑定到IEnumerable<LanguageItem>.
问题是我如何使DataAnnotations验证工作?
在这种情况下,我似乎无法理解编译器的警告:
using System;
using System.Collections.Generic;
#nullable enable
public class Program
{
public static void Main()
{
Guid guid = Guid.NewGuid();
Dictionary<Guid, string> d = new();
bool found = d.TryGetValue(guid, out string? str);
if (found is false)
{
return;
}
string s = str; // WARNING: possible null value
}
}
Run Code Online (Sandbox Code Playgroud)
毕竟,我正在执行found检查并在没有值时返回(例如,当out str值为空时)。另外,out该方法的参数.TryGetValue用 注释[MaybeNullWhen(false)]。
感谢您帮助找出我的期望中的错误并修复代码,谢谢。代码在这里。