‫۶ سال و ۴ ماه قبل، دوشنبه ۱۰ اردیبهشت ۱۳۹۷، ساعت ۱۳:۵۲
میان افزاری برای شبیه سازی قسمتی از این امکانات در برنامه‌های ASP.NET Core

ابتدا بسته‌ی نیوگت DNTCommon.Web.Core را نصب کنید:
PM> Install-Package DNTCommon.Web.Core
سپس میان افزار AntiDos آن‌را به صورت زیر می‌توانید استفاده و تنظیم کنید:
الف) آن‌را پیش از هر میان‌افزار دیگری ثبت کنید:
public void Configure(IApplicationBuilder app)
{
  app.UseAntiDos();
ب) تنظیمات مخصوص آن‌را به فایل appsettings.json اضافه کنید.
ج) این تنظیمات را به صورت زیر به برنامه معرفی کنید:
public void ConfigureServices(IServiceCollection services)
{
   services.Configure<AntiDosConfig>(options => Configuration.GetSection("AntiDosConfig").Bind(options));
این میان‌افزار هم یک فایروال است که می‌تواند یک رنج‌آی‌پی را ببندد و هم می‌تواند کلاینت‌ها را بر اساس user agent و همچنین هدرهای خاصی فیلتر کند. به علاوه در آن می‌توانید تنظیم کنید که یک کاربر در هر دقیقه چندبار می‌تواند درخواستی را به سمت سایت ارسال کند و پس از آن تا مدتی دسترسی آن به سایت قطع شود. 
‫۶ سال و ۴ ماه قبل، دوشنبه ۱۰ اردیبهشت ۱۳۹۷، ساعت ۱۳:۵۱
معادل این مطلب در برنامه‌های ASP.NET Core

ابتدا بسته‌ی نیوگت DNTCommon.Web.Core را نصب کنید:
PM> Install-Package DNTCommon.Web.Core
سپس میان افزار AntiDos آن‌را به صورت زیر می‌توانید استفاده و تنظیم کنید:
الف) آن‌را پیش از هر میان‌افزار دیگری ثبت کنید:
public void Configure(IApplicationBuilder app)
{
  app.UseAntiDos();
ب) تنظیمات مخصوص آن‌را به فایل appsettings.json اضافه کنید.
ج) این تنظیمات را به صورت زیر به برنامه معرفی کنید:
public void ConfigureServices(IServiceCollection services)
{
   services.Configure<AntiDosConfig>(options => Configuration.GetSection("AntiDosConfig").Bind(options));
این میان‌افزار هم یک فایروال است که می‌تواند یک رنج‌آی‌پی را ببندد و هم می‌تواند کلاینت‌ها را بر اساس user agent و همچنین هدرهای خاصی فیلتر کند. به علاوه در آن می‌توانید تنظیم کنید که یک کاربر در هر دقیقه چندبار می‌تواند درخواستی را به سمت سایت ارسال کند و پس از آن تا مدتی دسترسی آن به سایت قطع شود. 
‫۶ سال و ۴ ماه قبل، دوشنبه ۱۰ اردیبهشت ۱۳۹۷، ساعت ۱۳:۴۹
معادل این مطلب در برنامه‌های ASP.NET Core

ابتدا بسته‌ی نیوگت DNTCommon.Web.Core را نصب کنید:
PM> Install-Package DNTCommon.Web.Core
سپس میان افزار AntiDos آن‌را به صورت زیر می‌توانید استفاده و تنظیم کنید:
الف) آن‌را پیش از هر میان‌افزار دیگری ثبت کنید:
public void Configure(IApplicationBuilder app)
{
  app.UseAntiDos();
ب) تنظیمات مخصوص آن‌را به فایل appsettings.json اضافه کنید.
ج) این تنظیمات را به صورت زیر به برنامه معرفی کنید:
public void ConfigureServices(IServiceCollection services)
{
   services.Configure<AntiDosConfig>(options => Configuration.GetSection("AntiDosConfig").Bind(options));
این میان‌افزار هم یک فایروال است که می‌تواند یک رنج‌آی‌پی را ببندد و هم می‌تواند کلاینت‌ها را بر اساس user agent و همچنین هدرهای خاصی فیلتر کند. به علاوه در آن می‌توانید تنظیم کنید که یک کاربر در هر دقیقه چندبار می‌تواند درخواستی را به سمت سایت ارسال کند و پس از آن تا مدتی دسترسی آن به سایت قطع شود. 
‫۶ سال و ۴ ماه قبل، دوشنبه ۱۰ اردیبهشت ۱۳۹۷، ساعت ۱۳:۴۷
معادل این مطلب در برنامه‌های ASP.NET Core

ابتدا بسته‌ی نیوگت DNTCommon.Web.Core را نصب کنید:
PM> Install-Package DNTCommon.Web.Core
سپس میان افزار AntiDos آن‌را به صورت زیر می‌توانید استفاده و تنظیم کنید:
الف) آن‌را پیش از هر میان‌افزار دیگری ثبت کنید:
public void Configure(IApplicationBuilder app)
{
  app.UseAntiDos();
ب) تنظیمات مخصوص آن‌را به فایل appsettings.json اضافه کنید.
ج) این تنظیمات را به صورت زیر به برنامه معرفی کنید:
public void ConfigureServices(IServiceCollection services)
{
   services.Configure<AntiDosConfig>(options => Configuration.GetSection("AntiDosConfig").Bind(options));
این میان‌افزار هم یک فایروال است که می‌تواند یک رنج‌آی‌پی را ببندد و هم می‌تواند کلاینت‌ها را بر اساس user agent و همچنین هدرهای خاصی فیلتر کند. به علاوه در آن می‌توانید تنظیم کنید که یک کاربر در هر دقیقه چندبار می‌تواند درخواستی را به سمت سایت ارسال کند و پس از آن تا مدتی دسترسی آن به سایت قطع شود.
‫۶ سال و ۴ ماه قبل، یکشنبه ۹ اردیبهشت ۱۳۹۷، ساعت ۱۶:۰۹
یک نکته‌ی تکمیلی: روش کپی کردن فایل appsettings.json جهت دسترسی به آن در آزمون‌های واحد

ابتدا پس از build، فایل appsettings.json را در کنار خروجی برنامه کپی می‌کنیم (از پوشه‌ی وب، به پوشه‌ی bin\Debug\netcoreapp2.0 تست جاری)
<Target Name="CopyConfig" AfterTargets="AfterBuild">
    <Copy SourceFiles="..\MyWebApp\appsettings.json" DestinationFolder="$(OutDir)" />
</Target>
روش دیگر CopyToOutputDirectory زیر زمانیکه از SDK استفاده می‌شود، کار نمی‌کند:
  <ItemGroup>
    <None Update="..\MyWebApp\appsettings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>

سپس جائیکه ServiceCollection اولیه آزمون‌ها ساخته می‌شود، محل این فایل کپی شده را معرفی می‌کنیم:
var services = new ServiceCollection();
var configuration = new Microsoft.Extensions.Configuration.ConfigurationBuilder()
   .AddJsonFile("appsettings.json", reloadOnChange: true, optional: false)
   .AddInMemoryCollection(new[]
     {
       new KeyValuePair<string,string>("UseInMemoryDatabase", "true"),
     })
   .Build();
services.AddSingleton<IConfigurationRoot>(provider => configuration);
‫۶ سال و ۴ ماه قبل، شنبه ۸ اردیبهشت ۱۳۹۷، ساعت ۲۲:۵۴
مبحث AddPolicy که در مطلب « سفارشی سازی ASP.NET Core Identity - قسمت پنجم - سیاست‌های دسترسی پویا » توضیح داده شده، وابستگی به ASP.NET Core Identity ندارد و مستقل از آن، مرتبط به جزء Security مجموعه ASP.NET Core است که قسمتی از آن در مطلب جاری استفاده شده‌است. بنابراین نکات آن‌را به همراه یک جدول اضافه‌تر RoleClaims، اینجا هم اضافه کنید، کار می‌کند و هیچ تفاوتی ندارد. 
‫۶ سال و ۴ ماه قبل، شنبه ۸ اردیبهشت ۱۳۹۷، ساعت ۱۲:۴۸
یک نکته‌ی تکمیلی: لیست ابزارهای سراسری پیش‌فرض NET Core 2.1. که نیازی به نصب مجدد ندارند
- Microsoft.DotNet.Watcher.Tools (aka dotnet-watch)
- Microsoft.EntityFrameworkCore.Tools.DotNet (aka dotnet-ef)
- Microsoft.Extensions.SecretManager.Tools (aka dotnet-user-secrets)
- Microsoft.Extensions.Caching.SqlConfig.Tools (aka dotnet-sql-cache)
‫۶ سال و ۵ ماه قبل، پنجشنبه ۶ اردیبهشت ۱۳۹۷، ساعت ۱۷:۲۰
یک نکته‌ی تکمیلی: نحوه‌ی تنظیم زمان در متدهای Set

IMemoryCache به همراه یک سری متد الحاقی Set دار است. در اینجا متدهایی که DateTimeOffset را می‌پذیرند، با مقدار DateTimeOffset.UtcNow مقایسه خواهند شد.
‫۶ سال و ۵ ماه قبل، چهارشنبه ۵ اردیبهشت ۱۳۹۷، ساعت ۱۴:۱۱
الان این دستور «ng build --prod» را با Angular CLI: 1.7.4 و TypeScript 2.8.3 بر روی پروژه‌ی انتهای بحث اجرا کردم و مشکلی مشاهده نشد.
یکبار این مراحل را طی کنید و سپس مجددا امتحان کنید:
- دستور زیر تمام وابستگی‌های سراسری سیستم را به صورت یکجا به روز رسانی می‌کند:
npm update -g
- سپس به پوشه‌ی اصلی پروژه وارد شده و این دستورات را اجرا کنید تا وابستگی‌های پروژه‌ی جاری هم به روز شوند:
npm install npm-check-updates -g
ncu -u