‫۹ ماه قبل، دوشنبه ۶ آذر ۱۴۰۲، ساعت ۱۶:۰۵
در یکی از پروژه هایی که جدیدا باهاش درگیر شده ام دقیقا این مطلب رعایت نشده است. با ASP.NET WebForm نوشته شده و در یک صفحه هم از سشن به کرات استفاده شده برای مقاصد لاگین و متغیرهای سراسری و همچنین از چند ترد برای دریافت موازی اطلاعات از چند وب سرویس.
اما برای دفاع، منبع خوبی پیدا نمی‌کنم برای ارایه به کارفرما. فرومی که لینک دادید هم داخلش یک لینک هست برای mvc اما صفحه ارور ۴۰۳ میده. آیا سند معتبری هم هست برای ارایه به افراد ثالث؟
در ادامه یکی از فایل‌های #C آن‌را گشوده و منتظر شوید تا کار دریافت خودکار بسته‌های مرتبط با افزونه‌ی #C ایی 
موقع دریافت اکستنشن‌ها به ارور زیر برخورد می‌کنم.
The editor could not be opened due to an unexpected error: XHR timeout: undefinedms
با ش.ک.ن‌ها مشکل حل می‌شود اما متاسفانه پایدار نیستند. راه حل بهتری به نظرتان می‌رسد؟
البته برای برخی از اکستنشن‌ها یک پیام دیگر می‌آید که اگر مایلید به صورت دستی فایل .vsxl رو دانلود کنید و نصب کنید که خوب راهگشاست. اما برای بعضی از اکستنشن‌ها این پیام نمی‌آید.
با سلام،
برای style‌های inline هم باید از WithHash256   استفاده کرد؟
در یکی از پروژه‌ها متاسفانه inline Style زیاد استفاده شده و بنابراین پس از اجرای پروژه تمامی صفحه به هم می‌ریزد. با استفاده از developer tools هش‌های متعددی مانند پیغام خطایی که شما مثال زدید نمایش می‌دهد. بر آن شدم که تمامی هش‌ها را توسط  WithHash256   وارد کنم اما بازهم نتیجه منفی بود و خطای صادر شده تمامی هش هایی که اضافه شده بودند را نیز در لیست می‌آورد. 
بنابراین فعلا برای قسمت style از  UnsafeInline استفاده کردم. آیا برای style‌ها می‌شود کار دیگری انجام داد؟
Refused to apply inline style because it violates the following Content Security Policy directive: "style-src 'self' <URL> <URL>". Either the 'unsafe-inline' keyword, a hash ('sha256-e89EFOm4894OkHmgoH52lEUIFeaK8fITnql0='), or a nonce ('nonce-...') is required to enable inline execution. Note that hashes do not apply to event handlers, style attributes and javascript: navigations unless the 'unsafe-hashes' keyword is present.

‫۱ سال و ۲ ماه قبل، دوشنبه ۲۲ خرداد ۱۴۰۲، ساعت ۱۲:۱۴
به دلیل اینکه دیگر در EF Core متدهای HasOptional و WillCascadeOnDelete را نداریم قسمت ModelBuilder به شکل زیر تغییر می‌کند.
modelBuilder.Entity<BlogComment>()
                        .HasOne(x => x.Reply)
                        .WithMany(x => x.Children)
                        .HasForeignKey(x => x.ReplyId)
                        .OnDelete(DeleteBehavior.SetNull);
فقط بایستی navigation‌های مربوطه هم نال پذیر باشد یعنی:
  public virtual BlogComment? Reply { set; get; }
public int? ReplyId { get; set; }
public ICollection<BlogComment>? Children { get; set; }
‫۱ سال و ۵ ماه قبل، سه‌شنبه ۸ فروردین ۱۴۰۲، ساعت ۱۴:۲۵
با توجه به اینکه متد DeviceDetectionService با HttpContext اطلاعات مربوط به سیستم کاربر را استخراج می‌کند، در رابطه با اپلیکیشن Blazor Server که از مکانیزم کوکی استفاده می‌کند (مثال) و دسترسی به HttpContext پس از تشکیل هاب، مقدار معتبری را در بر ندارد، چکار باید کرد؟
‫۱ سال و ۵ ماه قبل، شنبه ۲۰ اسفند ۱۴۰۱، ساعت ۱۵:۰۴
روش استفاده از MariaDb به همراه EF Code First در Blazor Server
برای این منظور می‌توان از پروایدر  Pomelo.EntityFrameworkCore.MySql  استفاده نمود (لایسنس Open source MIT ). ابتدا توسط دستور زیر پکیج آن را نصب می‌نماییم:
Install-Package Pomelo.EntityFrameworkCore.MySql
سپس یک رشته اتصال مانند زیر در فایل appsettings.json ایجاد می‌نماییم:
"ConnectionStrings": {
    "MariaDbConnectionString": "server=localhost;user id=root;password=root;database=aspnetcore.mariadb"
  }
حال در تنظیمات سرویس‌های برنامه در Program.cs به شکل زیر عمل می‌کنیم:
public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContextPool<ApplicationDbContext>(options => options
        .UseMySql(
            Configuration.GetConnectionString("MariaDbConnectionString"),MariaDbServerVersion.AutoDetect(Configuration.GetConnectionString("MariaDbConnectionString"))
        )
    );
}
به راحتی بانک را در سرور ایجاد نموده و جداول را نیز می‌سازد. البته بنابر تنظیمات خاص یک سرور لینوکس ممکن است نیاز باشد تا ابتدا بانک به صورت دستی در سرور ایجاد شود و مابقی قضایا (ساخت جداول و ...) می‌تواند به پروایدر واگذار شود.
جهت اطلاعات بیشتر می‌توانید به *  و *  مراجعه نمایید.
‫۱ سال و ۷ ماه قبل، شنبه ۱۷ دی ۱۴۰۱، ساعت ۱۳:۰۸
همچنین می‌توانید با اضافه کردن خط زیر در استارت آپ برنامه، با تزریق وابستگی، به HttpContext، در سرویس‌ها به آن دسترسی داشته باشید. ()Services. AddHttpContextAccessor
این قسمت از متن پاسخ بنده صحیح نمی‌باشد. در این حالت ممکن است مقدار HttpContext نامعتبر باشد. راهکار همان دوخط اول می‌باشد.
ممکن است بیشتر توضیح دهید؟
یعنی من نمی‌توانم از سرویس دیگری داخل سرویس فراخوانی شده توسط کامپوننت استفاده کنم؟
در کل رویکرد پروژه این بوده است که بتوان موقع لاگ گیری کد کاربر را نیز لاگ نمود. یک راه حل دیگر که به نظرم رسید این بود که کد کاربر را موقع فراخوانی سرویس از داخل کامپوننت مقداردهی کنم (با این روش)، اما اگر روش بالا جواب می‌داد کد تمیزتری حاصل می‌شد.
بسیار ممنون. از این روش در پروژه دیگری استفاده کرده بودم و هرکاری می‌کردم بازهم خطای مذبور را دریافت می‌کردم. پس از چند روز مقایسه کدها، کاشف به عمل آمد که مشکل از نوع تزریق سرویس در کامپوننت می‌باشد. در پروژه برای تزریق سرویس از این روش استفاده کرده بودم:
@inherits OwningComponentBase 
...
private IUserInfoService userInfoService { get; set; } 
...
userInfoService = ScopedServices.GetRequiredService<IUserInfoService>();
که با تغییر آن به شکل زیر مشکل در سطح کامپوننت حل شد:
@inject IUserInfoService UserInfoService
اما مشکل هنوز در سطح سرویس وجود دارد. یعنی اگر از سرویس UserInfoService در سرویس دیگر به روش زیر استفاده شود، آنگاه خطا بروز می‌کند.
public class ManualLog: IManualLog
    {
    private readonly IUserInfoService _userInfoService;

    public ManualLog(IUserInfoService userInfoService)
            {
                _userInfoService = userInfoService ?? throw new ArgumentNullException(nameof(userInfoService));
            }

    public async task Log()
            {
                int userId = await _userInfoService.GetUserIdAsync();
             }
    }
پیام خطا مثل قبل:
 GetAuthenticationStateAsync was called before SetAuthenticationState   
ممنون. این راه را نیز قبلا امتحان کرده بودم در کدهای لوکال البته به شکل زیر:
public async Task<int?> GetUserIdAsync()
        {
            var authenticationState = await _authenticationStateProvider.GetAuthenticationStateAsync();
            if (!authenticationState.User.Identity.IsAuthenticated)
                return 0;
            return Convert.ToInt32(authenticationState.User.Claims?.First().Value);
        }
 اما باز هم در صورتی که AuthenticationStateProvider به صورت AddScoped ثبت شود این خطا دریافت می‌گردد:
GetAuthenticationStateAsync was called before SetAuthenticationState