‫۵ سال و ۳ ماه قبل، یکشنبه ۱۹ خرداد ۱۳۹۸، ساعت ۱۴:۴۸
یکی از مشکلاتی که در Asp.net core 2.1 با آن برخورد کردیم نال بودن tempdata بعد از مقدار دهی بود. این مورد زمانی پیش می‌آید که استفاده از GDPR فعال باشد و از ایجاد کوکی‌های دیگر  جلوگیری کند. بدین جهت برای فعال کردن کلیه tempdata‌های برنامه نیاز است که IsEssential به طور پیش فرض فعال گردد. پس کد زیر را به فایل startup اضافه میکنیم:
     services.Configure<CookieTempDataProviderOptions>(options =>
            {
                options.Cookie.IsEssential = true;
            });
از این پس tempdata فعال میگردد و مقدار نال نخواهد داشت.
‫۵ سال و ۱۰ ماه قبل، شنبه ۱۲ آبان ۱۳۹۷، ساعت ۱۵:۲۲
جهت فشرده سازی چون gzip در net core. میتوان از این middleware به شکل زیر استفاده کرد:
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddResponseCompression();

        services.AddResponseCompression(options =>
        {
            options.Providers.Add<GzipCompressionProvider>();
            options.EnableForHttps = true;
        });
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseResponseCompression();
    }
}

‫۵ سال و ۱۰ ماه قبل، یکشنبه ۶ آبان ۱۳۹۷، ساعت ۱۹:۲۶
یک نکته تکمیلی :
در این روش تنها پارامترهای رشته ای که به طور مستقیم، متغیر در اکشن متد تعریف میشود بایند میگردند ولی خصوصیت‌های رشته ای در پارامترهایی که از نوع کلاس تعریف شده اند که بسیار پرکاربرد هم هستند تاثیری ندارد، برای این موارد بایندر جدیدی را به شکل زیر مینویسیم:
public class StringModelBinder : DefaultModelBinder
    {

protected override void SetProperty(ControllerContext controllerContext,
          ModelBindingContext bindingContext,
          System.ComponentModel.PropertyDescriptor propertyDescriptor, object value)
        {
            if (propertyDescriptor.PropertyType == typeof(string))
            {
                var stringValue = (string)value;
                if (!string.IsNullOrEmpty(stringValue))
                {
                    value =value.ToString().Replace((char)1610, (char)1740).Replace((char)1603, (char)1705);
                }
                else
                {
                    value = null;
                }
            }

            base.SetProperty(controllerContext, bindingContext,
                                propertyDescriptor, value);
        }

    }
در اینجا متد دیگری را به نام SetProperty برای تغییر خصوصیت هر متدی که یافت میشود صدا زده میشود را رونویسی کردیم. شی propertyDescriptor  اطلاعات خصوصیت مورد نظر از قبیل نام و مقدار و ... را نگهداری میکندو در اینجا مقدار خصوصیت را دریافت کرده و تغییرات لازم را انجام میدهیم سپس مقدا تغییر یافته را توسط base به متد پدر منتقل میکنیم. سپس برای اعمال این بایندر کد زیر را اضافه میکنیم:
 ModelBinders.Binders.DefaultBinder = new StringModelBinder();
بدین ترتیب بایندر پیش فرض به سیستم معرفی میگردد.
‫۵ سال و ۱۰ ماه قبل، شنبه ۵ آبان ۱۳۹۷، ساعت ۱۲:۲۳
نکته تکمیلی : در صورتی که ZipFile را در فضای نام System.IO.Compression مشاهده نکردید؛ اسمبلی System.IO.Compression.FileSystem.dll  را به قسمت رفرنس اضافه کنید