小编Ant*_*Ant的帖子

PostAuthenticateRequest多次发射

我有Forms身份验证,我需要一个自定义对象存储在HttpContext.Current.User和Thread.CurrentPrincipal中.

为了得到这个,我听PostAuthenticateRequest事件,然后从DB读取我需要存储在HttpContext.Current.User和Thread.CurrentPrincipal中的所有用户数据,然后我实例化自定义IPrincipal和IIdentity对象并将它们分配给上面位置.

问题是由于某种原因,PostAuthenticateRequest会针对单个请求多次触发..这会导致不必要的DB往返,从而影响性能.

我该如何解决这个问题?(ASP.NET MVC 2)

谢谢.

asp.net asp.net-mvc-2

6
推荐指数
1
解决办法
3334
查看次数

DataAnnotations验证和自定义模型绑定器

我有一个接受以下模型的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验证工作?

custom-model-binder data-annotations asp.net-mvc-2

2
推荐指数
1
解决办法
1484
查看次数

Dictionary.TryGetValue 和可能的“null”警告

在这种情况下,我似乎无法理解编译器的警告:

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)]

感谢您帮助找出我的期望中的错误并修复代码,谢谢。代码在这里

c# nullable nullable-reference-types

1
推荐指数
1
解决办法
2563
查看次数