یک نکته‌ی تکمیلی
در ASP.NET Core و کنترلرهای آن می‌توان  «مثال 2: وهله سازی در صورت نیاز وابستگی‌های یک سرویس به کمک Lazy loading» را به صورت زیر نیز پیاده سازی کرد:
public async Task<IActionResult> Index(
            [FromServices] MusicStoreContext dbContext,
            [FromServices] IMemoryCache cache)
در اینجا ویژگی FromServices، تنها سرویس‌های  مورد نیاز این اکشن متد را در اختیار آن قرار می‌دهد. به این ترتیب نیازی به تزریق آن‌ها به سازنده‌ی کنترلر نخواهد بود. همین مساله، به تاخیر افتادن وهله سازی این سرویس‌ها را تا زمان استفاده‌ی از آن‌ها در این اکشن متد، سبب خواهد شد.
‫۵ سال و ۱ ماه قبل، شنبه ۱۹ مرداد ۱۳۹۸، ساعت ۱۷:۲۰
ارتقاء به ASP.NET Core 3.0 : تغییرات مورد نیاز در فایل آغازین برنامه جهت ارتقاء به Endpoint routing

اگر در نگارش 2.2، فایل کلاس آغازین برنامه‌ی شما چنین شکلی را دارد:
public void Configure(IApplicationBuilder app)
{
    ...

    app.UseStaticFiles();
    
    app.UseAuthentication();

    app.UseSignalR(hubs =>
    {
        hubs.MapHub<ChatHub>("/chat");
    });

    app.UseMvc(routes =>
    {
        routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
    });
}
در نگارش 3x به صورت زیر تغییر می‌کند:
public void Configure(IApplicationBuilder app)
{
    ...

    app.UseStaticFiles();
    
    app.UseRouting();

    app.UseAuthentication();
    app.UseAuthorization();
    app.UseCors();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapHub<ChatHub>("/chat");
        endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
    });
}
نکاتی که در اینجا حائز اهمیت هستند:
- متد UseRouting اضافه شده‌است.
- UseStaticFiles (در صورت نیاز) باید قبل از UseRouting فراخوانی شود.
- اگر برنامه‌ی شما به مباحث اعتبارسنجی پرداخته و در کنترلرهای آن از فیلتر Authorize استفاده می‌شود، دو تغییر مهم فراخوانی UseAuthentication و سپس UseAuthorization (که این مورد جدید هست) را پس از فراخوانی UseRouting باید انجام دهید. در غیر اینصورت در حین مرور این صفحات و قسمت‌های محافظت شده، برنامه با خطای زیر متوقف خواهد شد:
Endpoint xyz contains authorization metadata, but a middleware was not found that supports authorization.
Configure your application startup by adding app.UseAuthorization() inside the call to Configure(..) in the application startup code.
- محل فراخوانی UseCors را (در صورت نیاز) دقیقا مطابق کدهای فوق و به ترتیبی که ذکر شده باید انجام دهید.
- متدهای UseMvc و یا UseSignalR قبلی، به متد UseEndpoints تبدیل شده‌اند.
‫۵ سال و ۱ ماه قبل، شنبه ۱۹ مرداد ۱۳۹۸، ساعت ۱۷:۰۴
یک نکته‌ی تکمیلی
ممکن است در حین اجرای عملیات تولید کلاس‌های Migrations در NET Core 3.0. به خطای «ارجاعی به اسمبلی Microsoft.EntityFrameworkCore.Design در پروژه‌ی آغازین برنامه وجود ندارد» بخورید. برای رفع آن نیازی نیست تا این ارجاع را به پروژه‌ی اصلی اضافه کنید. فقط سطر قبلی زیر را
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" 
                  Version="3.0.0-preview7.19362.6"
                  PrivateAssets="all" />
در فایل csproj مربوط به پروژه‌ی مجزای DataLayer که Context برنامه در آن قرار دارد یافته و خاصیت PrivateAssets آن‌را حذف کنید.
‫۵ سال و ۱ ماه قبل، جمعه ۱۸ مرداد ۱۳۹۸، ساعت ۱۷:۰۲
- مطلب آن فرد هندی که لینک دادید، به نظر از این مطلب استفاده کرده.
- برای دسترسی به اکشن متدهای محافظت شده‌ی با ویژگی خالی Authorize (بدون هیچگونه تنظیم دیگری)، تنها وجود شرط ورود به سیستم کافی است. اگر Policy یا Role خاصی بر روی آن‌ها اعمال شود، آنگاه آن شخص باید User Claims ویژه‌ای را داشته باشد تا بتواند شرایط آن Policy را تامین کند. در مورد نوشتن انواع و اقسام Policyهای سفارشی (چه بر اساس شرایط User Claims ثابت (policy => policy.RequireClaim) و چه پویا که به همراه AuthorizationHandlerها هستند) در این مطلب بحث شده و شما محدود به تنظیمات پیش‌فرض پروژه نیستید.
- مطلب «تنظیمات کش توزیع شده‌ی مبتنی بر SQL Server در ASP.NET Core» و خصوصا نظرات آن‌را مطالعه کنید.
‫۵ سال و ۱ ماه قبل، جمعه ۱۸ مرداد ۱۳۹۸، ساعت ۰۱:۰۹
- هدف از بررسی HttpContext.Request.IsLocal در قطعه کدها و یا "pattern="localhost" negate="true در الگوهای web.config عنوان شده، عدم اعمال این تنظیم به localhost هست تا چنین مشکلی رخ ندهد.
- اگر قصد آزمایش www.localhost را دارید، همان کاری را که در یک هاست واقعی با تنظیم DNSها انجام می‌دهید، اینجا هم باید انجام دهید؛ یعنی www.localhost باید به 127.0.0.1 نگاشت شود. برای انجام اینکار به صورت محلی، notepad را با دسترسی ادمین اجرا کنید (این مورد برای ذخیره کردن تغییرات در فایل hosts ضروری است). سپس فایل C:\Windows\System32\drivers\etc\hosts را در آن باز کرده و یک سطر زیر را به آن اضافه و ذخیره کنید. سپس سیستم را ری استارت کنید:
127.0.0.1 www.localhost