‫۷ سال و ۹ ماه قبل، دوشنبه ۱۵ آذر ۱۳۹۵، ساعت ۲۰:۲۰
برای فعال و غیر فعال نمودن فیلتر‌های انجام داده شده ، می‌توان متد هایی را برای این منظور نوشت ، همانند :

تعریف امضای متد‌ها در uow :


   void SetDisableFilter(FilterColumn type);
        void SetEnableFilter(FilterColumn type);

و پیاده سازی به صورت :
 public void SetDisableFilter(FilterColumn type)
        {
            switch (type)
            {
                case FilterColumn.SoftDelete:
                    this.DisableFilter("IsDeleted");
                    break;
                
            }
        }

        public void SetEnableFilter(FilterColumn type)
        {
            switch (type)
            {
                case FilterColumn.SoftDelete:
                    this.EnableFilter("IsDeleted");
                    break;
            }
        }
برای نمونه ،
 public IEnumerable<MyVM> GetAll()
        {
            total = GetCount();
            return _db.Where(filter).ToList();
        }
      public int GetCount()
        {
              _uow.SetDisableFilter(Common.FilterColumn.SoftDelete);
            int count =_expertises.Count();
  _uow.SetEnableFilter(Common.FilterColumn.SoftDelete);  
return count;  }
‫۷ سال و ۱۰ ماه قبل، دوشنبه ۱۷ آبان ۱۳۹۵، ساعت ۱۷:۵۲
ممنون بابت این مقاله .
در یکی از پروژه هایی که چندین سال پیش نوشته شده بود برای قفل نرم افزار  از کدی شبیه به زیر استفاده شده بود :
Math.Sinh(123456.12).ToString();
قطعه کد فوق در ویندوز‌های قبل از 10 مقدار برگشتی Infinity  را داشت ولی در ویندوز 10 خروجی ∞  را بر میگرداند که باعث خطا در نرم افزار میشد.
برای رفع آن همانطور که در مطلب فوق نیز عنوان شده، با استفاده از کد زیر قابل اصلاح می‌باشد :
Math.Sinh(123456.12).ToString(CultureInfo.InvariantCulture);
‫۷ سال و ۱۱ ماه قبل، یکشنبه ۲ آبان ۱۳۹۵، ساعت ۱۳:۰۵
سلام. تشکر بابت این مطلب مفید .
- بنده در حالت آنلاین بعد از افزودن پست جدید و یا بر روز رسانی پست هایی که قبلا وجود داشته اند ولی ایندکس نشده اند ، می‌بایست برنامه را ری استارت کنم تا موارد جدید در نتایج جستجو نمایش داده شوند . البته اگر پارامتر create را مقدار دهی نکنم یعنی به صورت زیر  مشکلی وجود ندارد :
using (var indexWriter = new IndexWriter(_directory, analyzer, mfl: IndexWriter.MaxFieldLength.UNLIMITED))

در غیر اینصورت  در صورت عدم فراخوانی متد CreateIndex  ، خطای زیر نمایش داده می‌شود :
no segments* file found in Lucene.Net.Store.SimpleFSDirectory@E:\\Lucene_Index lockFactory=Lucene.Net.Store.NativeFSLockFactory: files: write.lock
ممنون


‫۸ سال قبل، پنجشنبه ۲۵ شهریور ۱۳۹۵، ساعت ۱۵:۲۶
مطلب مفید و کاربردی می‌باشد ، ممنون.
آیا سنارویو زیر با این کتابخانه قابل  انجام می‌باشد :
بنده میخوام بعد از اینکه کاربر به درگاه پرداخت فرستاده شده ، تا نیم ساعت بعد از آن اگر پاسخی از بانک دریافت نشد  تا سه مرتبه هر ده دقیه یک بار وضعیت پرداخت رو بررسی کنم .
‫۸ سال و ۲ ماه قبل، شنبه ۲ مرداد ۱۳۹۵، ساعت ۲۲:۰۶
اگر پروژه‌ی مورد نظر خود را بر روی هاست آپلود کرده و کاربر به صورت اتوماتیک loggout می‌شود ممکن است  به احتمال زیاد مشکل به Idle-timeout  در IIS بر گردد .
Idle-time Out به صورت پیش فرض بر روی 20 دقیقه تنظیم شده است .

در سروری که بنده پروزه رو آپلود کرده بودم روی 5 تنظیم شده بود و همین موضوع باعث خروج کاربر میشد .
غیر فعال کردن  Idle-timeout :
ابتدا به مسیر زیر مراجعه کرده :
C:\Windows\System32\inetsrv\config\schema\IIS_schema.xml

مقدار Idle-timeout به صورت زیر میباشد :
<attribute name="idleTimeout" 
       type="timeSpan" 
       defaultValue="00:20:00" 
       validationType="timeSpanRange" 
       validationParameter="0,2592000,60"/>

اگر مقدار آن بر روی 0 تنظیم شود ، Idle-timeout غیر فعال میشود .
‫۸ سال و ۲ ماه قبل، دوشنبه ۲۸ تیر ۱۳۹۵، ساعت ۱۷:۵۹
با تشکر از مطلب شما.
بنده در پروژه ای دقیقا طبق موارد توضیح داده شده در این مقاله (و سایر پروژه‌های موجود در سایت جاری) عمل کردم ام . مشکلی که دارم کوکی مربوطه موجود می‌باشد (با استفاده از فایبر باگ چک کردم) ولی کاربر در کمتر از ده دقیقه کاربر خارج میشود در صورتی که کوکی هنوز معتبر و زمان منقضی شدن آن به اتمام نرسیده است . تنظیمات به صورت خلاصه به صورت زیر می‌باشد :
   app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                LoginPath = new PathString("/Account/Login"),
                 ExpireTimeSpan = TimeSpan.FromDays(30),
                Provider = new CookieAuthenticationProvider
                {
                    OnValidateIdentity = StoreObjectFactory.Container.GetInstance<IApplicationUserManagerService>().OnValidateIdentity()
                },
                SlidingExpiration = true,
                CookieName = "iasaccount"
            });

  public Func<CookieValidateIdentityContext, Task> OnValidateIdentity()
        {
            return SecurityStampValidator.OnValidateIdentity<ApplicationUserManagerService, User, Guid>(
                         validateInterval: TimeSpan.FromDays(3),
                         regenerateIdentityCallback: (manager, user) => GenerateUserIdentityAsync(manager, user),
                         getUserIdCallback: id => id.GetGuidUserId());
        }

و :
            var result = await _signInManagerService.PasswordSignInAsync(loginViewModel.Email, loginViewModel.Password, loginViewModel.RememberMe, shouldLockout: false);

آیا تنظیمات دیگه ای لازم هست که انجام شود ؟
‫۸ سال و ۵ ماه قبل، جمعه ۱۰ اردیبهشت ۱۳۹۵، ساعت ۰۴:۱۰
1- بنده با اجرای قطعه  کد زیر  خروجی secret  را دریافت میکنم ، در صورتی که با خروجی شما یکسان نیست ، دلیل این که در اجرای قطعه کد زیر خطای _nested is not defined را دریافت نمیکنم  چیست ؟

2- و با اجرای قطعه کد زیر خطای عدم تعریف متغیر را دریافت میکنم:
{ let x='dotnet' } console.log(x);
آیا باید let را به طور کامل جایگزین var کنیم یا فقط در مواردی که احساس می‌شود باید از آن (let) استفاده کنیم .
تشکر بابت این سری مقالات .
‫۸ سال و ۵ ماه قبل، سه‌شنبه ۲۴ فروردین ۱۳۹۵، ساعت ۱۳:۰۸
تشکر از شما آقای یگانه مقدم  بابت مطلب مفید و متن روان مقاله .
یک سوال ، نظر شما در رابطه با اینکه برای تمام سرویس‌ها از این الگو استفاده کنیم چیست (یعنی دیگر داخل خود متدهای سرویس اعتبار سنجی ... رو انجام ندیم) ؟ و یا اینکه چه وقت هایی و برای چه سرویس هایی بهتر است از این الگو استفاده کنیم  ؟
‫۸ سال و ۸ ماه قبل، دوشنبه ۱۲ بهمن ۱۳۹۴، ساعت ۱۳:۰۳
تشکر. فیلد DeletedBy  به این منظور در نظر گرفتم چون در سیستم حذف فیزیکی نداریم و داده به صورت منطقی خذف می‌شود. به همین دلیل این فیلد رو اضافه کردم  که بتوان فهمید کاربری که اقدام به حذف کرده رو پیدا کرد. من اسم کاربر رو نگهداری نمیکنم ، فقط آی دی کاربری که عمل مورد نظر را انجام داده ذخیره میکنم.  سورس Decision رو هم نگاه کردم ، پروژه حرفه ایی بود .فرمودید که از ذکر Icollection‌ها خودداری کنم ، در این صورت اگر بخوام کانفیگی به صورت زیر بنویسیم راه حل چیست؟ 
  HasRequired(row => row.CreatedBy).WithMany(row => row.CategoriesCreated).HasForeignKey(row => row.CreatedById).WillCascadeOnDelete(false);
HasOptional(row => row.DeletedBy).WithMany(row => row.CategoriesDeleted).HasForeignKey(row => row.DeletedById).WillCascadeOnDelete(false);
اگر تعداد رابطه‌های جدول User زیاد باشد تاثیری بر روی سرعت دارد یا خیر؟
‫۸ سال و ۸ ماه قبل، یکشنبه ۱۱ بهمن ۱۳۹۴، ساعت ۲۰:۳۶
تشکر .
من از جداول شما به همان روش استفاده کردم  . با تغییر یک فیلد برای حذف ، به صورت زیر
      public virtual User DeletedBy { get; set; }
        public virtual TForeignKey DeletedById { get; set; }
 و در جدول User برای هر کدام از Navigation‌ها به صورت زیر عمل کردم :
    public virtual ICollection<Category> CategoriesCreated { get; set; }
        public virtual ICollection<Category> CategoriesDeleted { get; set; }
        public virtual ICollection<Category> CategoriesModified { get; set; }

پس در این حالت بین جدول User و Category سه رابطه وجود دارد. من در سیستمم 40 جدول دارم که  در این حالت جدول User حدود 120 رابطه با جداول دیگر خواهد داشت . آیا این تعداد رابطه مشکل ساز نمی‌شود ؟ نظر شما برای این بخش چیست ؟