دلیل دیگری برای بروز خطای 500.19
اگر پوشه‌ی برنامه خارج از مسیر c:\program files\inetpub\wwwroot باشد، یعنی کاربر Application pool برنامه، دسترسی کافی را برای خواندن و اجرای فایل‌های برنامه ندارد (به صورت پیش‌فرض). در این حالت همانطور که در مطلب فوق نیز ذکر شد، باید مراحل زیر را طی کنید تا دسترسی‌های read و execute به پوشه‌ی برنامه داده شوند:
Right click on the folder -> Properties -> Security tab -> Click at Edit button ->
Enter `IIS AppPool\DefaultAppPool` user (IIS AppPool\<app_pool_name>) -> Click at Check names -> OK ->
Then give it `read & execute` or other permissions.
‫۶ سال و ۴ ماه قبل، شنبه ۵ خرداد ۱۳۹۷، ساعت ۰۲:۰۲
بله. wildcard certificates در اواخر سال 2018 ارائه خواهد شد که با IIS 7.5 هم کار می‌کند. البته امکان دریافت چندین نوع مجوز به ازای زیر دامنه‌های مختلف یک سایت هم هست، اما استفاده‌ی از آن‌ها نیاز به ویژگی مخصوص «Server Name Indication» موجود در IIS سرور 2012 به بعد را دارد که فعلا در دسترس نیست (امکان داشتن بیش از یک مجوز و استفاده‌ی از آن‌ها به ازای تنها یک IP).
- البته این مشکل با مجوزهای SAN برطرف شد. توضیحات بیشتر
‫۶ سال و ۴ ماه قبل، شنبه ۵ خرداد ۱۳۹۷، ساعت ۰۱:۵۲
زیردامنه dl روی یک هاست دیگر هست یا روی همین هاست هست؟ آیا به صورت فیزیکی به آن دسترسی دارید؟ اگر بله، مطالبی که در اینجا عنوان شده کافی هست و نیازی به هیچ نوع پیاده سازی خاصی ندارد، چون از سرگیری مجدد جزئی از خواص متدهای بازگشت فایل توسط ASP.NET Core است. اگر خیر، در اینجا باید فایل را دریافت کنید. در مطلب «از سرگیری مجدد، لغو درخواست و سعی مجدد دریافت فایل‌های حجیم توسط HttpClient» این مورد بحث شده‌است. قابلیت resume، همان از سرگیری مجدد هست. یعنی مدیریت range headers. کلاینت هدر range را با مقداری مانند bytes=500-999 ارسال می‌کند. شما این ابتدا و انتها را دریافت می‌کنید و سپس توسط روشی که در آن مطلب عنوان شده، مقدار RangeHeaderValue را تعیین و دریافت می‌کنید. البته من تابحال ندیدم کسی چنین کاری را انجام دهد، چون پهنای باند مصرفی یک سرور را دو برابر می‌کند!
‫۶ سال و ۴ ماه قبل، شنبه ۵ خرداد ۱۳۹۷، ساعت ۰۱:۴۰
دقیقا چه خطایی دریافت کردید؟ چون مشکلی نیست:

با این شرایط البته:

- سرویس مدنظر پیشتر در فایل آغازین برنامه ثبت شده باشد:

public void ConfigureServices(IServiceCollection services)
{
    services.AddTransient<IMyService, MyService>();
}
- همچنین هاب هم ثبت شده باشد:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    app.UseSignalR(routes =>
            {
                routes.MapHub<MessageHub>(path: "/message");
            });
این ثبت هست که کلاس هاب را وارد سیستم تزریق وابستگی‌های ASP.NET Core می‌کند.
- محل کش کردن اطلاعات، سرویس‌ها هستند که طول عمر singleton دارند. یک سرویس را طراحی کنید که در سازنده‌ی آن اطلاعات مورد نظر را دریافت کند. سپس این سرویس پس از دریافت اطلاعات، به تمام کامپوننت‌های مشترک به آن با استفاده از BehaviorSubject اطلاع رسانی کند.
- همچنین اگر اطلاعاتی قرار است درست در لحظه‌ی آغاز برنامه واکشی شود، روش کار آن در مطلب « مدیریت اعمال آغازین در برنامه‌های Angular » بحث شده‌است.
‫۶ سال و ۴ ماه قبل، پنجشنبه ۳ خرداد ۱۳۹۷، ساعت ۱۷:۴۷
شما بجای استفاده از url friendly یا هر افزونه‌ی ثالثی، فقط باید مسیریابی متناظری را تعریف کنید، تا این آدرس‌ها به صورت استاندارد و قابل استفاده‌ی در تمام قسمت‌های برنامه تولید شوند. MVC نیازی به افزونه‌های url friendly ندارد؛ چیزی شبیه به این و یا مثال «سازگار کردن لینک‌های قدیمی یک سایت با ساختار جدید آن در ASP.NET MVC»:
routes.MapRoute(
    "category_route", // Route name
    "MyControllerName/{category}/{productname}", // URL with parameters
    new { controller = "MyControllerName", action = "MyActionName",
             category = UrlParameter.Optional, productname = UrlParameter.Optional, area = "" }
);
در این حالت با توجه به اینکه یک درخواست شخص ممکن است برگشت بخورد، اضافه کردن امکان «سعی مجدد درخواست شکست خورده» این مشکل را حل می‌کند: «سعی مجدد خودکار درخواست‌های با شکست مواجه شده در برنامه‌های Angular»
‫۶ سال و ۴ ماه قبل، پنجشنبه ۳ خرداد ۱۳۹۷، ساعت ۱۳:۴۵
الان با این تعاریفی که انجام دادید چه مشکلی هست؟
‫۶ سال و ۴ ماه قبل، سه‌شنبه ۱ خرداد ۱۳۹۷، ساعت ۱۶:۱۵
ارتقاء به Angular 6: ساده سازی قسمت providers در CoreModule

ویژگی جدیدی به Angular 6 به نام tree-shakable providers اضافه شده‌است که نمونه‌ای از کاربرد آن به صورت پیش‌فرض در حین «ایجاد پروژه‌ی «کتابخانه» توسط Angular CLI 6.0» ارائه می‌شود. به این معنا که با استفاده‌ی از آن دیگر نیازی نیست تا سرویس‌های سراسری برنامه را در قسمت providers مربوط به CoreModule ثبت کرد. همینقدر که یک سرویس سراسری را به صورت ذیل تعریف کنید:
import { Injectable } from '@angular/core';
@Injectable({
    providedIn: 'root'
})
export class MyCoreService { }
خاصیت providedIn آن کار ثبت این سرویس را به صورت خودکار انجام می‌دهد. تفاوت آن با حالت قبل این است که اگر این سرویس جایی در برنامه استفاده نشده باشد، tree-shakable خواهد بود. یعنی به صورت کد مرده در نظر گرفته شده و به prod bundle اضافه نمی‌شود که سبب کاهش حجم نهایی برنامه می‌گردد.
در این حالت تزریق وابستگی‌هایی که در مطلب «تزریق وابستگی‌ها فراتر از کلاس‌ها در برنامه‌های Angular» نیز بحث شدند، پشتیبانی می‌شود:
@Injectable({
    providedIn: 'root',
    useClass: LazyFlightCancellingService,
    deps: [NgModuleFactoryLoader, Injector] 
})
export class FlightCancellingService { }
فقط مواردی مانند ثبت interceptors و حالت‌هایی که به همراه InjectionToken هستند، هنوز هم باید از طریق قسمت providers صورت گیرد.

به عنوان مثال کدهای مخزن کد «اعتبارسنجی کاربران در برنامه‌های Angular» جهت استفاده‌ی از این قابلیت به روز شد.
‫۶ سال و ۴ ماه قبل، دوشنبه ۳۱ اردیبهشت ۱۳۹۷، ساعت ۱۷:۰۲
روشی برای بهبود رتبه‌ی سرور در سایت ssllabs
سایت ssllabs سرور شما را جهت یافتن مشکلات SSL اسکن می‌کند. تعداد زیادی از الگوریتم‌های رمزنگاری مرتبط با SSL تا به امروز منسوخ شده‌اند و باید از سیستم حذف شوند. برای بالابردن رتبه‌ی سرور در این حالت، اسکریپت پاورشل Setup your IIS for SSL Perfect Forward Secrecy and TLS را بر روی سرور اجرا کرده و سپس یکبار کل سرور را ری‌استارت کنید.