یا اگر نمونه‌ی AuthorizationHandler سفارشی آن‌را نیاز داشتید، به صورت زیر است:
- ابتدا یک IAuthorizationRequirement و AuthorizationHandler سفارشی را ایجاد می‌کنیم که در هندلر آن دسترسی کاملی به اطلاعات کاربر وارد شده‌ی به سیستم وجود دارد:
public class UserCanSeeProjectRequirement : IAuthorizationRequirement
{
    public UserCanSeeProjectRequirement() { }

}


public class UserCanSeeProjectHandler : AuthorizationHandler<UserCanSeeProjectRequirement>
{
    protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, 
                                                   UserCanSeeProjectRequirement requirement)
    {
        //claim-based validation
        if (context.User.HasClaim("permission.cansee", "CanSee"))
                context.Succeed(requirement);

        //role-based validation
        if (context.User.IsInRole("admin") || context.User.IsInRole("user"))
                context.Succeed(requirement);

        return Task.CompletedTask;
    }
}
سپس نیاز است این اطلاعات را به برنامه‌ی کلاینت معرفی کرد:
namespace BlazorWasm.Client
{
    public class Program
    {
        public static async Task Main(string[] args)
        {
            // ...

            services.AddScoped<IAuthorizationHandler, UserCanSeeProjectHandler>();
            services.AddAuthorizationCore(options => {
                options.AddPolicy("UserCanSeeProjectPolicy", policy => policy.Requirements.Add(new UserCanSeeProjectRequirement()));
            });

            // ...
        }
    }
}
و در نهایت می‌توان Policy جدید فوق را که با نام UserCanSeeProjectPolicy معرفی شده، یا به صورت زیر در ابتدای یک صفحه:
@attribute [Authorize(Policy = "UserCanSeeProjectPolicy")]
و یا در قسمتی از آن صفحه استفاده کرد:
<AuthorizeView Policy="UserCanSeeProjectPolicy">
    <NotAuthorized>
       <h2 class="mt-5">You are not authorized to view this page</h2>
    </NotAuthorized>
    <Authorized>
      <div class="container my-profile">
        --- Place here all the content you want your user to view ----
      </div>
    </Authorized>
</AuthorizeView>
‫۱ سال و ۲ ماه قبل، چهارشنبه ۳۱ خرداد ۱۴۰۲، ساعت ۱۵:۱۷
یک نکته‌ی تکمیلی: اضافه شدن متد جدید DistinctBy به دات نت 6

همانطور که در این مطلب نیز بررسی شد، جهت کار با متد Distinct، باید روش مقایسه‌ی اشیاء پیچیده، توسط یک پیاده سازی اختصاصی از IEqualityComparer مشخص شود. دات نت 6 جهت ساده‌کردن این عملیات، متد DistinctBy را اضافه کرده‌است که توسط آن می‌توان یک خاصیت شیء مدنظر را به عنوان کلید مقایسه مشخص کرد. روش پیاده سازی آن‌را در هم در اینجا می‌توانید مشاهده کنید که در پشت صحنه از یک HashSet استفاده می‌کند. یعنی کلیدهای مشخص شده‌ی توسط DistinctBy را یکی یکی به HashSet اضافه می‌کند. این ساختار داده‌ی ویژه، مقادیر تکراری را قبول نمی‌کند. اگر متد Add آن، true را برگرداند، یعنی مقادیر جدیدی اضافه شده‌است و اگر false را برگرداند، یعنی این مقدار، تکراری است و اضافه نخواهد شد. برای مثال فرض کنید لیستی را به صورت زیر تعریف کرده‌اید:
var list = new List<int> {1,1,2,2,3,3,3,4,4,4};
یکی از ده‌ها روش یافتن اعضای تکراری این لیست که سرعت بسیار بالایی هم دارد، استفاده از یک HashSet و متد Add آن است؛ به صورت زیر:
var hash = new HashSet<int>();
var duplicates = list.Where(i => !hash.Add(i));
اگر متد Add، مقدار false را برگرداند، یعنی آیتم مدنظر تکراری است.

یک مثال: روش استفاده از متد DistinctBy بر روی یک خاصیت مشخص و خروجی نهایی حاصل از آن:
var movies = new List<Movie>
{
    new Movie("Titanic", 1998, 4.5f),
    new Movie("The Fifth Element", 1997, 4.6f),
    new Movie("Terminator 2", 1991, 4.7f),
    new Movie("Avatar", 2009, 5),
    new Movie("Platoon", 1986, 4),
    new Movie("My Neighbor Totoro", 1988, 5)
};

var distinctRatings = movies.DistinctBy(movie => movie.Rating);

// Output:
// Titanic,The Fifth Element,Terminator 2,Avatar,Platoon
‫۱ سال و ۲ ماه قبل، سه‌شنبه ۳۰ خرداد ۱۴۰۲، ساعت ۱۰:۵۲
یک نکته‌ی تکمیلی: بکارگیری گسترده‌ی Generic attributes در ASP.NET Core 8x

ویژگی Generic attributes به C# 11 اضافه شد، اما در آن زمان، تغییری در تعاریف ویژگی‌های مبتنی بر System.Type موجود در ASP.NET Core 7x رخ نداد. اکنون این قابلیت به صورت گسترده‌ای در ASP.NET Core 8x در موارد زیر بکارگرفته شده‌است:
ProducesResponseType<T>
Produces<T>
MiddlewareFilter<T>
ModelBinder<T>
ModelMetadataType<T>
ServiceFilter<T>
TypeFilter<T>
‫۱ سال و ۲ ماه قبل، پنجشنبه ۱۸ خرداد ۱۴۰۲، ساعت ۱۸:۰۲
یک نکته‌ی تکمیلی: شبیه سازی mikeal/publish-to-github-action@master با کدنویسی مستقیم
این اکشن که جهت به روز رسانی مخزن کد، با تغییرات جدید است، بر اساس سرورهای لینوکسی کار می‌کند و اگر از سرور ویندوزی استفاده شود، خطا خواهد داد که می‌شود آن‌را با معادل زیر، جایگزین کرد:
      - name: Push changes to repo          
        run: |      
          git config http.sslVerify false
          git config user.name "${{ github.actor }}"
          git config user.email "${{ github.actor }}@users.noreply.github.com"
          git remote add publisher "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git"
          git show-ref
          git branch --verbose
          git lfs install
          git checkout main
          git add -A
          git commit -m "Automated publish"
          git pull --rebase publisher main
          git push publisher main
نکته‌ی مهم! اگر این قطعه کد را به انتهای فایل yml اکشن خود اضافه کنید، با خطای «نداشتن دسترسی»، خاتمه پیدا می‌کند. برای رفع این مشکل، مسیر «Settings > Actions > General» را در مخزن کد جاری، طی کرده و در انتهای صفحه، گزینه‌ی «Read and write permissions» را انتخاب کنید. حالت پیش‌فرض آن «Read repository contents permission» است که برای اعمال تغییرات کافی نیست.
‫۱ سال و ۲ ماه قبل، پنجشنبه ۱۸ خرداد ۱۴۰۲، ساعت ۱۷:۵۱
یک نکته‌ی تکمیلی: روش تنظیم TimeSpan در فایل‌های config
قالب ذکر TimeSpan در فایل‌های config به صورت d.hh:mm:ss.ff است (d در اینجا، تعداد روز است و ff، کسری از ثانیه)؛ مانند:
"WaitForExit": "0.00:02:00.0000"
که به معنای 2 دقیقه است.
یک مثال دیگر:
"1.02:03:04" is 1 day, 2 hours, 3 mins, 4 seconds
‫۱ سال و ۲ ماه قبل، جمعه ۱۲ خرداد ۱۴۰۲، ساعت ۱۸:۵۰
پروژه‌ی «Meziantou.DotNet.CodingStandard» کار تولید خودکار لیست بررسی کننده‌های یک آنالیزر و تبدیل آن‌ها به فایل‌های editorconfig. را انجام می‌دهد که در آن‌ها  این بررسی کننده‌ها به حالت warning تنظیم شده‌اند. علت اینجا است که ممکن است خود آنالیزر، این‌ها را به صورت پیش‌فرض در حالت توصیه، تنظیم کرده باشد. هدف، سخت‌گیری بیشتر است.