‫۶ سال و ۳ ماه قبل، دوشنبه ۴ تیر ۱۳۹۷، ساعت ۰۲:۲۳
- چرا قسمتی از تصویر را ارسال کردید؟ چرا مشخص نیست چه دستوری اجرا شده؟
- احتمالا بین حروف قسمت‌های مختلف نام پوشه‌ای که درست کردید «فاصله» وجود دارد. دستور «dotnet new -i» را در صفحه‌ی جاری جستجو کنید. این کل کاری است که باید انجام دهید.
‫۶ سال و ۳ ماه قبل، پنجشنبه ۳۱ خرداد ۱۳۹۷، ساعت ۱۳:۲۴
بهتر است اینکار را انجام ندهید تا تمام claims و طراحی برنامه را به هم نریزد. یک فیلد جداگانه و مخصوص کدملی را به جدول سفارشی کاربران اضافه کنید. سپس در ابتدای لاگین بر اساس کد ملی شخص، شیء user را از بانک اطلاعاتی واکشی کنید. در آخر بر اساس اطلاعات این شیء دریافتی که شامل username و غیره است، PasswordSignInAsync اصلی را فراخوانی کنید تا کوکی‌های برنامه و claims آن به درستی تشکیل شوند.
‫۶ سال و ۳ ماه قبل، پنجشنبه ۳۱ خرداد ۱۳۹۷، ساعت ۰۱:۰۳
کمی بالاتر توضیح دادم. این «local runtime store» را که جستجو می‌کند بر اساس شماره SDK، تمام فایل‌ها را به همراه دارد و به همین جهت حجم ارائه‌ی برنامه در این حالت بسیار کم است. برای مثال شما از نگارش 2.1.1 استفاده می‌کنید (مطابق خطای ارسالی) و به احتمال زیاد بر روی سرور فقط 2.1.0 نصب هست و run time store فعلی فاقد فایل‌های 2.1.1 هست. به همین جهت هست که یا باید SDK جدید را نصب کنید و یا فایل‌های اضافی آن‌را دستی ارائه کنید.
‫۶ سال و ۳ ماه قبل، چهارشنبه ۳۰ خرداد ۱۳۹۷، ساعت ۰۱:۰۴
یک نکته‌ی تکمیلی: روش تعیین حداکثر اندازه‌ی فایل قابل آپلود در برنامه‌های ASP.NET Core
الف) اگر برنامه توسط IIS هاست شده‌است
<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <!-- To customize the asp.net core module uncomment and edit the following section. 
 For more info see https://go.microsoft.com/fwlink/?linkid=838655 -->
 <system.webServer>
  <handlers>
  <remove name="aspNetCore"/>
  <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
  </handlers>
  <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
  <security>
   <requestFiltering>
    <!-- This will handle requests up to 50MB -->
    <requestLimits maxAllowedContentLength="52428800" />
   </requestFiltering>
  </security>
  </system.webServer>
</configuration>
در اینجا (در فایل web.config برنامه) مقدار خاصیت maxAllowedContentLength است که تعیین کننده‌ی حداکثر اندازه‌ی فایل قابل آپلود است. به علاوه مطمئن شوید که فایل web.config شما حتما publish شده.
همچنین requestTimeout را نیز به صورت زیر می‌توان مقدار دهی کرد:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <aspNetCore requestTimeout="00:20:00"  .... />
  </system.webServer>
</configuration>
به همراه این تنظیمات:
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<IISServerOptions>(options =>
            {
                options.MaxRequestBodySize = int.MaxValue;
            });
            services.Configure<FormOptions>(options =>
            {
                options.ValueLengthLimit = int.MaxValue;
                options.MultipartBodyLengthLimit = long.MaxValue; // <-- ! long.MaxValue
                options.MultipartBoundaryLengthLimit = int.MaxValue;
                options.MultipartHeadersCountLimit = int.MaxValue;
                options.MultipartHeadersLengthLimit = int.MaxValue;
            });
 
ب) اگر برنامه در لینوکس و بر اساس وب سرور Kestrel هاست شده‌است
روش اول: استفاده از ویژگی RequestSizeLimit که از نگارش ASP.NET Core 2.0 به بعد قابل استفاده‌است و صرفا به قسمتی از برنامه اعمال می‌شود:
[HttpPost]
[RequestSizeLimit(40000000)]
public async Task<IActionResult> UploadFiles(IFormFile file)
روش دوم: تنظیم سراسری آن برای کل برنامه:
        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder
                        .UseStartup<Startup>()
                        .ConfigureKestrel(kestrelServerOptions =>
                        {
                            kestrelServerOptions.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(10);
                            kestrelServerOptions.Limits.MaxRequestBodySize = 52428800; //50MB
                        });
                });
بدیهی است تنظیم این دو روش در حالت استفاده‌ی از IIS تاثیری نخواهند داشت.