نظرات مطالب
VS Code برای توسعه دهندگان ASP.NET Core - قسمت دوم - ایجاد و اجرای اولین برنامه
در ادامه یکی از فایل‌های #C آن‌را گشوده و منتظر شوید تا کار دریافت خودکار بسته‌های مرتبط با افزونه‌ی #C ایی 
موقع دریافت اکستنشن‌ها به ارور زیر برخورد می‌کنم.
The editor could not be opened due to an unexpected error: XHR timeout: undefinedms
با ش.ک.ن‌ها مشکل حل می‌شود اما متاسفانه پایدار نیستند. راه حل بهتری به نظرتان می‌رسد؟
البته برای برخی از اکستنشن‌ها یک پیام دیگر می‌آید که اگر مایلید به صورت دستی فایل .vsxl رو دانلود کنید و نصب کنید که خوب راهگشاست. اما برای بعضی از اکستنشن‌ها این پیام نمی‌آید.
نظرات مطالب
Blazor 5x - قسمت 34 - توزیع برنامه‌های Blazor بر روی IIS
اما هنگام پابلیش ، تو پوشه _framework هنوز حدود 200  dll قرار میگیره و دانلود اینها تو مرورگر لود را میبره بالا . 
به ازای هر فایل نگارش اصلی dll، نگارش gz. و یا br. آن هم جداگانه تولید و نگهداری می‌شود که به ظاهر تعداد آن‌ها زیاد است. از هر کدام از این‌ها فقط «یکی» بر اساس تنظیمات سرور و نحوه‌ی درخواست مرورگر ارائه خواهد شد و نه تمام آن‌ها. همچنین در طی publishهای بعدی، بر اساس امضای دیجیتال فایل‌های دریافتی و کش شده‌ی در مرورگر، موارد تکراری دریافت نخواهند شد.
نظرات مطالب
روش ایجاد پروژه‌ها‌ی کتابخانه‌ای کامپوننت‌های Blazor
یک نکته‌ی تکمیلی: استفاده از فقط یک فضای نام برای کل پروژه‌ی کتابخانه‌ای
فرض کنید که یک کتابخانه از کامپوننت‌های Blazor را با پوشه‌بندی‌های مختلفی ایجاد کرده‌اید. هر کدام از این پوشه‌ها به صورت خودکار به همراه فضای نام متناظر با نام آن پوشه هم خواهند بود. برای مثال اگر در پوشه‌ی C:\Prog\BlazorLib\Folder1 کامپوننت Component1.razor قرار گیرد، فضای نام پیش‌فرض آن BlazorLib.Folder1 خواهد بود. این مساله توزیع و استفاده‌ی از کامپوننت‌های پوشه‌بندی شده را برای استفاده کنندگان ثالث مشکل می‌کند؛ چون باید به ازای هر پوشه، یک using را تعریف کنند. برای استفاده از تنها یک فضای نام در کل پروژه می‌توان از روش
@namespace BlazorLib
در ابتدای تمام فایل‌های razor. استفاده کرد. این تنظیم، فضای نام پیش‌فرض پوشه‌ها را بازنویسی می‌کند.
نظرات مطالب
Blazor 5x - قسمت 34 - توزیع برنامه‌های Blazor بر روی IIS
یک نکته‌ی تکمیلی: کاربرد base href در فایل index.html چیست؟

فرض کنید برنامه‌ی شما قرار است از داخل زیر پوشه‌ی جدید blazor با آدرس http://example.com/blazor ارائه شود. در این حالت پس از مراجعه به این آدرس، فقط loading را مشاهده خواهید کرد و ... برنامه بارگذاری نمی‌شود. علت اینجا است که در حالت پیش‌فرض، base href تنظیم شده‌ی در فایل index.html، به ریشه‌ی سایت اشاره می‌کند:
<!DOCTYPE html>
<html>
<head>
   <base href="/" />
بنابراین در این حالت برنامه فایل‌های مورد نیاز خود را در ریشه‌ی وب سرور جستجو خواهد کرد و نه از زیر پوشه‌ی blazor. برای رفع این مشکل باید تغییر زیر صورت گیرد:
<base href="/blazor/" />
نظرات مطالب
Blazor 5x - قسمت یازدهم - مبانی Blazor - بخش 8 - کار با جاوا اسکریپت
یک نکته‌ی تکمیلی: دریافت خروجی مستقیم از کدهای جاوااسکریپتی در برنامه‌های Blazor، بدون تهیه‌ی فایل‌های js. خارجی
با استفاده از تابع eval جاوااسکریپت می‌توان کدهای جاوااسکریپتی را به صورت مستقیم هم اجرا کرد؛ چند مثال:
- اجرای یک سطر کد جاوااسکریپتی به صورت مستقیم و دریافت خروجی آن:
var timeZoneOffSet = await jsRuntime.InvokeAsync<int>("eval", "new Date().getTimezoneOffset()");
- فراخوانی یک متد خود اجرا شونده و دریافت خروجی آن:
var ianaTimeZoneName = jsRuntime.Invoke<string>("eval",
    "(function(){try { return ''+ Intl.DateTimeFormat().resolvedOptions().timeZone; } catch(e) {} return 'UTC';}())");
نظرات مطالب
Blazor 5x - قسمت ششم - مبانی Blazor - بخش 3 - چرخه‌های حیات کامپوننت‌ها
- بله؛ در جائی که قرار هست ترد UI را خالی کنید، مانند مثال «نمایش شرطی عبارات در فایل‌های razor.» که مربوط به دریافت اطلاعات از سرویس‌های از راه دور است یا ارسال اطلاعات به آن‌ها (که دقیقا معادل اعمال Ajax ای سمت کلاینت هستند)، «نیاز» هست از متدهای async استفاده کنید. علت وجودی دو نگارش sync و async هم در اینجا به ازای هر رویدادگران تعریف شده، به همین دلیل است. متدهای async سمت کلاینت، فقط ترد UI را خالی می‌کنند، تا UI برنامه در طی این متد رفت و برگشتی به سمت سرور پاسخگو باشد و هنگ کرده به نظر نرسد.
- اینکه چه متدی را باید async تعریف کرد یا نه، مطالعه‌ی مطلب «متدهای async تقلبی» حتی در اینجا هم مفید است.
نظرات مطالب
روش یکی کردن پروژه‌های React و ASP.NET Core
با فرض نصب ماژول URL-rewrite، مسیریابی فایل‌های ایستای React را به صورت زیر هم می‌توان در فایل web.config برنامه‌ی وب تنظیم کرد تا درخواست مسیرهای سمت کلاینت آن‌ها به سمت سرور ارسال نشود:
<?xml version="1.0"?>
<configuration>
  <system.webServer>
     <rewrite>
         <rules>
            <rule name="React Routes" stopProcessing="true">
              <match url=".*" />
              <conditions logicalGrouping="MatchAll">
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
              </conditions>
              <action type="Rewrite" url="/index.html" />
            </rule>
         </rules>
     </rewrite>
  </system.webServer>
</configuration>
نظرات مطالب
روش یکی کردن پروژه‌های React و ASP.NET Core
- این دستور فقط npm run start را در پشت صحنه اجرا می‌کند. بنابراین کاربر منتسب به application pool برنامه در IIS واقعی باید مجوز اجرای فایل‌های اجرایی را داشته باشد؛ مثلا:

- همچنین npm هم باید در path ویندوز موجود باشد تا زمانیکه دستور یاد شده اجرا می‌شود، بدون مشکل قابل دسترسی باشد.

- بدیهی است هدف از IIS واقعی، توزیع برنامه است و در این حالت فقط به نکات مطلب «React 16x - قسمت 34 - توزیع برنامه» نیاز خواهید داشت و نباید تنظیمات یاد شده بر روی یک سرور واقعی اعمال شوند.

نظرات مطالب
امن سازی برنامه‌های ASP.NET Core توسط IdentityServer 4x - قسمت دهم- ذخیره سازی اطلاعات کاربران IDP در بانک اطلاعاتی
- Identity server یک محصول کاملا مجزای از ASP.NET Core Identity است و توسط تیم دیگری خارج از مایکروسافت توسعه داده می‌شود و این دو ارتباطی به هم ندارند.
- هرچند امکان استفاده‌ی از ASP.NET Core Identity برای مدیریت کاربران Identity server هم وجود دارد.
- کاری که در این سری انجام شده، ابتدا در «قسمت چهارم - نصب و راه اندازی IdentityServer» فایل‌های Quick Start UI را به پروژه‌ی IDP اضافه کردیم (یعنی دقیقا از کدهای اصلی تیم Identity server استفاده شده). بعد در این قسمت، سایر کدهای اصلی بسته‌ی EF Core آن‌را (^ و ^) به پروژه اضافه و سفارشی سازی کرده و در قسمت‌های دیگر، این کدها را تکمیل کرده‌ایم. بنابراین در این سری از کدهای استاندارد خود  Identity server استفاده شده و سپس توسعه‌ی بیشتری پیدا کرده‌اند. برای نمونه کلاس‌های موجودیت‌های مثال این سری، از اینجا تامین شده‌اند.
نظرات مطالب
امن سازی برنامه‌های ASP.NET Core توسط IdentityServer 4x - قسمت چهاردهم- آماده شدن برای انتشار برنامه
- برای اجرای همزمان چندین پروژه در ویژوال استودیو ، بر روی solution کلیک راست کرده و properties آن‌را انتخاب کنید. سپس در پنجره‌ی ظاهر شده، multiple startup project را انتخاب و در آخر پروژه‌های مورد نظر را انتخاب و وضعیت None آن‌ها را به start تغییر دهید.
- شماره پورت‌های این برنامه‌ها در فایل‌های Properties\launchSettings.json درج شده‌اند. اگر قرار است این سه برنامه با هم اجرا شوند، نباید این شماره‌ها یکی باشند. در پروژه‌ی ارسال شده، این مسایل رعایت شده‌اند (هم برای حالت اجرای توسط IIS Express و هم برای حالت اجرای توسط dotnet run): ^ و ^ و ^