بررسی خطاهای ممکن در حین راه اندازی اولیه برنامه‌های ASP.NET Core در IIS
اندازه‌ی قلم متن
تخمین مدت زمان مطالعه‌ی مطلب: پنج دقیقه

نحوه‌ی نصب و راه اندازی برنامه‌های ASP.NET Core را در IIS، پیشتر در مطلب «ارتقاء به ASP.NET Core 1.0 - قسمت 22 - توزیع برنامه توسط IIS» بررسی کردیم. در این مطلب می‌خواهیم به تعدادی از خطاهای ممکن در حین راه اندازی اولیه‌ی این نوع برنامه‌ها بپردازیم.


خطای 500.19


این خطا زمانی رخ می‌دهد که ماژول هاستینگ ASP.NET Core، توسط IIS شناسایی نشده باشد. نصب مجدد آن این مشکل را برطرف می‌کند.
لیست تمام ماژول‌های هاستینگ را همواره در اینجا می‌توانید پیدا کنید.


خطای 502.5 و یا گاهی از اوقات 502


باید دقت داشته باشید که اگر تنظیم disableStartUpErrorPage در IIS فعال باشد (قابل افزودن به تگ aspNetCore تنظیمات وب کانفیگ ذیل)، صرفا خطای 502 را دریافت می‌کنید.

این خطا به معنای شکست در اجرای ماژول هاستینگ ASP.NET Core است و ممکن است به یکی از دلایل ذیل ایجاد شده باشد:
الف) در حین اجرای برنامه‌ی شما، استثنایی در کدهای فایل آغازین startup.cs برنامه، رخ داده‌است.
ب) پورت مورد استفاده‌ی برنامه، توسط پروسه‌ی دیگری در حال استفاده است.
ج) برنامه‌ی شما برای SDK با نگارش 1.1.2 تنظیم و کامپایل شده‌است؛ اما بر روی سرور حداکثر، SDK نگارش 1.1.1 نصب شده‌است.
د) ممکن است پروسه‌ی IIS قادر به یافتن و حتی اجرای dotnet.exe نباشد.

برای لاگ کردن مورد «الف»، باید لاگ کردن خطاهای برنامه را در web.config آن فعالسازی کنید:
<system.webServer>
   <handlers>
     <add name="aspNetCore" path="*" verb="*"
modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\MyApp.dll" stdoutLogEnabled="true"
stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="true" />
</system.webServer>
چند نکته:
- اگر این مورد به مسیر logs\stdout\. تنظیم شده‌است، باید پوشه‌ی logs را در ریشه‌ی پروژه به صورت دستی ایجاد کنید؛ و گرنه IIS آن‌را به صورت خودکار ایجاد نخواهد کرد.
- کاربر App Pool برنامه (با نام پیش‌فرض « IIS AppPool\DefaultAppPool») باید دسترسی نوشتن در این پوشه را داشته باشد؛ وگرنه فایل لاگی در آن ایجاد نخواهد شد.
- همچنین اگر با رعایت تمام این موارد، محتوای این فایل تولید شده باز هم خالی بود، یکبار IIS را ری‌استارت کنید. ممکن است IIS کار نوشتن در فایل لاگ را تمام نکرده باشد و با این کار مجبور به تکمیل و بستن فایل می‌شود.  

- برای حالت «ب» قبل از هر تغییری، یکبار کل سرور را ری‌استارت کنید.

- برای مورد «ج» نیز باید آخرین SDK هاستینگ را بر روی سرور نصب کنید.
لیست تمام SDKهای نصب شده‌ی بر روی سیستم را در مسیر «C:\Program Files\dotnet\sdk» می‌توانید مشاهده کنید. همچنین دستور «dotnet --list-sdks» نیز لیست SDKهای نصب شده را نمایش می‌دهد.

- برای رفع حالت «د»، نیاز است این موارد را بررسی کنید:
1- «Load User Profile» را به true تنظیم کنید.


برای اینکار به قسمت Application pools مراجعه کرده و تنظیمات پیشرفته‌ی App pool مورد استفاده را ویرایش کنید (تصویر فوق).
این تنظیم برای دائمی کردن کلیدهای رمزنگاری برنامه‌های ASP.NET Core نیز ضروری است و باید جزو چک لیست نصب برنامه‌های ASP.NET Core قرار گیرد.
2- مورد «د» حتی می‌تواند به علت عدم تعریف مسیر «C:\Program Files\dotnet\» در path ویندوز باشد. برای این منظور دستور env:path$ را در power shell اجرا کنید و بررسی کنید که آیا این مسیر در خروجی آن موجود است یا خیر؟ اگر نبود، پس از اضافه کردن آن به path ویندوز، باید یکبار IIS را هم ریست کنید تا این تنظیمات جدید را بخواند.
3- مورد «د» ممکن است به علت اشتباه تنظیم پوشه‌ی اصلی برنامه در IIS نیز باشد. یعنی dotnet.exe قادر به یافتن اسمبلی‌های برنامه نیست.
4- برای رفع مورد «د» دو دسترسی دیگر را نیز باید بررسی کنید:
الف) آیا کاربر Application pool برنامه به پوشه‌ی برنامه دسترسی read & execute را دارد یا خیر؟
ب) آیا کاربر Application pool برنامه به پوشه‌ی C:\Program Files\dotnet دسترسی 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.


خطای 502.3 و یا گاهی از اوقات 500


این خطا به صورت خلاصه به معنای «Bad Gateway: Forwarder Connection Error» است و زمانی رخ می‌دهد که پروسه‌ی dotnet.exe به درخواست رسیده شده یا پاسخی نداده‌است (مشاهده خطای 0x80072EE2  یا  ERROR_WINHTTP_TIMEOUT) و یا بیش از اندازه این پاسخ دهی طول کشیده‌است (این تنظیمات را در configuration editor می‌توانید مشاهده کنید که در حقیقت همان تگ aspNetCore در تنظیمات وب کانفیگ فوق است).


برای دیباگ بهتر این مورد نیاز است علاوه بر تنظیم web.config فوق، به فایل appsettings.json مراجعه کرده و سطح پیش فرض لاگ کردن اطلاعات را که warning است به information تغییر دهید:
"Console": {
     "LogLevel": {
        "Default": "Information"
     }
}
در این حالت درخواستی که پردازش نشده‌است نیز در لاگ‌ها حضور خواهد داشت و ممکن است این درخواست به علت عدم تنظیم CORS بدون پاسخ باقی مانده باشد.
و یا اگر پردازشی دارید که بیش از 2 دقیقه طول می‌کشد (مطابق تنظیمات تصویر فوق)، می‌توانید مقدار request time out را بیشتر کنید.


خطای 0x80004005 : 80008083

Application ‘<IIS path>’ with physical root ‘<Application path>’ failed to start 
process with commandline ‘”dotnet” .\MyApp.dll’, ErrorCode = ‘0x80004005 : 80008083.
خطای 0x80008083 به معنای تداخل نگارش‌ها است و خطای 0x80004005 به معنای مفقود بودن یک فایل یا عدم دسترسی به آن است.
این خطا زمانی رخ می‌دهد که برنامه‌ی خود را ارتقاء داده باشید، اما ماژول هاستینگ ASP.NET Core را بر روی سرور به روز رسانی نکرده باشید.


خطای 500.19

HTTP Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.
اگر برنامه‌ی شما از امکانات URL Rewrite خود IIS استفاده می‌کند، عدم نصب بودن آن بر روی سرور، این خطا را سبب خواهد شد.
برای اینکار ابتدا IIS را متوقف کنید. سپس SDK جدید را نصب و پس از آن IIS را مجددا راه اندازی نمائید.


خطای 503

برنامه اجرا نشده و سطر ذیل در Event Viewer ویندوز قابل مشاهده است:
 The Module DLL C:\WINDOWS\system32\inetsrv\aspnetcore.dll failed to load.  The data is the error.
اگر اخیرا سیستم عامل را ارتقاء داده‌اید، ممکن است این خطا را دریافت کنید. راه حل آن نصب مجدد ماژول هاستینگ ASP.NET Core است تا نصب قبلی تعمیر شود.
  • #
    ‫۶ سال و ۵ ماه قبل، یکشنبه ۱۹ فروردین ۱۳۹۷، ساعت ۱۵:۳۵
    دلیل دیگری برای مشاهده‌ی خطای 502.5

    فایل web.config یک برنامه‌ی publish نشده‌ی ASP.NET Core چنین شکلی را دارد:
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.webServer>
        <handlers>
          <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
        </handlers>
        <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
      </system.webServer>
    </configuration>
    اگر این فایل بدون publish بر روی سرور قرار گیرد، خطای 502.5 را مشاهده خواهید کرد که بیانگر عدم یافت شدن فایل dll اصلی برنامه جهت اجرای آن است. برای رفع آن، برنامه را یکبار publish کنید تا مسیرهایی که با % مشخص شده‌اند، با نمونه‌های واقعی جایگزین شوند و به این صورت، امکان آغاز پروسه‌ی برنامه وجود داشته باشد.
  • #
    ‫۶ سال و ۴ ماه قبل، یکشنبه ۲۳ اردیبهشت ۱۳۹۷، ساعت ۱۷:۲۰
    با سلام؛  لطفا برای این خطا برای نصب sdk رفرنسی برای مطالعه ذکر نمایید: خطای 500.19
    • #
      ‫۶ سال و ۴ ماه قبل، یکشنبه ۲۳ اردیبهشت ۱۳۹۷، ساعت ۱۷:۳۰
      -  لیست تمام ماژول‌های هاستینگ را همواره در اینجا می‌توانید پیدا کنید.
      - همچنین باید دقت داشت که ماژول Url rewrite به صورت پیش فرض نصب نیست و باید از طریق web platform installer نصب شود (لیست دریافت آن، در انتهای صفحه‌است).  
  • #
    ‫۶ سال و ۴ ماه قبل، دوشنبه ۲۴ اردیبهشت ۱۳۹۷، ساعت ۱۴:۰۰
    علت بروز خطای «An assembly specified in the application dependencies manifest (deps.json) was not found» بر روی هاست

    پس از ASP.NET Core 2.0 مفهوم متاپکیج «Microsoft.AspNetCore.All» و در 2.1 «Microsoft.AspNetCore.App» معرفی شد. هدف این بسته‌ها کاهش تعداد مداخل بسته‌های تعریف شده‌ی در فایل csproj و همچنین کاهش حجم نهایی برنامه‌ی تهیه شده‌است و محل خوانده شدن آن‌ها نیز از محل نصب بسته‌ی SDK و dotnet\store آن است. بنابراین اگر متاپکیج شما به نگارش 2.0.3 اشاره می‌کند:
     <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.3" />
     و بر روی هاست SDK مخصوص 2.0.1 نصب است، اجرای برنامه با مشکل مواجه شده و خطای یاد شده را مشاهده خواهید کرد. برای رفع آن باید شماره نگارش متاپکیج استفاده شده، با شماره نگارش SDK نصب شده‌ی بر روی سرور یکی باشد.
  • #
    ‫۶ سال و ۳ ماه قبل، شنبه ۵ خرداد ۱۳۹۷، ساعت ۱۳:۳۸
    دلیل دیگری برای بروز خطای 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.
  • #
    ‫۶ سال و ۳ ماه قبل، چهارشنبه ۳۰ خرداد ۱۳۹۷، ساعت ۲۰:۵۴
    بنده هم هنگام پابلیش بر روی Windows Server 2012 پیغام 502.5 مشاهده کردم . با زدن دستور dotnet myapp.dll

     خطای زیر را مشاده کردم .
      An assembly specified in the application dependencies manifest (MyWebApp.deps.json) was not found:
        package: 'Microsoft.ApplicationInsights.AspNetCore', version: '2.1.1'
        path: 'lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore.dll'
      This assembly was expected to be in the local runtime store as the application was published using the following target manifest files:
    راه‌های گفته شده را امتحان کردم نشد و سپس با جستجوی بیشتر  متوجه شدم باید دستور زیر را به .csproject برنامه اضافه کرد و بعد دوباره پابلیش کردم و مشکل بر طرف شد. اما این روش در هنگام پابلیش فایل‌های بیشتری تولید می‌کند و پروژه را سنگین می‌کند. آیا راه حل دیگری برای این پیغام بالا وجود دارد ؟
    <PropertyGroup>               
        <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
    </PropertyGroup>

    • #
      ‫۶ سال و ۳ ماه قبل، پنجشنبه ۳۱ خرداد ۱۳۹۷، ساعت ۰۱:۰۳
      کمی بالاتر توضیح دادم. این «local runtime store» را که جستجو می‌کند بر اساس شماره SDK، تمام فایل‌ها را به همراه دارد و به همین جهت حجم ارائه‌ی برنامه در این حالت بسیار کم است. برای مثال شما از نگارش 2.1.1 استفاده می‌کنید (مطابق خطای ارسالی) و به احتمال زیاد بر روی سرور فقط 2.1.0 نصب هست و run time store فعلی فاقد فایل‌های 2.1.1 هست. به همین جهت هست که یا باید SDK جدید را نصب کنید و یا فایل‌های اضافی آن‌را دستی ارائه کنید.
  • #
    ‫۶ سال و ۲ ماه قبل، یکشنبه ۳۱ تیر ۱۳۹۷، ساعت ۱۵:۱۹
    یکی از شرایطی که در زمان publish برنامه و share کردن برنامه در IIS باعث بروز خطای 502.5 می‌شود  مطلب فعالسازی Development time IIS support می‌باشد.
    برای انجام این فعالسازی، تغییر زیر در تگ aspNetCore در فایل web.config بوجود می‌آید که در زمان publish برنامه هم باقی می‌ماند:
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.webServer>
        ...
        <aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" startupTimeLimit="3600" requestTimeout="23:00:00" stdoutLogEnabled="false" />
        ...
      </system.webServer>
    </configuration>
    که باعث بروز 
    خطای 502.5  می‌باشد. برای حل این مشکل و همچنین استفاده از قابلیت ذکر شده در زمان توسعه برنامه، پس از publish برنامه در پوشه خروجی به فایل web.config مراجعه کرده تگ  aspNetCore  را به حالت اولیه آن باز می‌گردانیم:
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.webServer>
        ...
         <aspNetCore processPath=".\ApplicationName.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
        ...
      </system.webServer>
    </configuration>
    که در آن ApplicationName.exe نام فایل خروجی است که باید با نام مناسب جایگزین گردد.
  • #
    ‫۵ سال و ۱۱ ماه قبل، یکشنبه ۱ مهر ۱۳۹۷، ساعت ۱۱:۲۷
    روشی دیگر برای لاگ کردن خطاهای آغاز برنامه
    <Project Sdk="Microsoft.NET.Sdk.Web">
      <PropertyGroup>
        <TargetFramework>netcoreapp2.1</TargetFramework>
      </PropertyGroup>
      <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.4" />
        <PackageReference Include="Serilog.AspNetCore" Version="2.1.1" />
        <PackageReference Include="Serilog.Sinks.RollingFile" Version="3.3.0" />
    و سپس تغییر فایل program.cs جهت لاگ کردن خطاهای آغاز برنامه:
    public class Program
    {
        public static int Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
           .MinimumLevel.Debug()
           .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
           .Enrich.FromLogContext()
           .WriteTo.RollingFile("logs/log-{Date}.txt")
           .CreateLogger();
     
            try
            {
                Log.Information("Starting web host");
                BuildWebHost(args).Run();
                return 0;
            }
            catch (Exception ex)
            {
                Log.Fatal(ex, "Host terminated unexpectedly");
                return 1;
            }
            finally
            {
                Log.CloseAndFlush();
            }
     
        }
     
        public static IWebHost BuildWebHost(string[] args) =>
              WebHost.CreateDefaultBuilder(args)
              .UseStartup<Startup>()
                  .UseSerilog() // <-- Add this line
                  .Build();
     
    }
  • #
    ‫۵ سال و ۹ ماه قبل، چهارشنبه ۲۱ آذر ۱۳۹۷، ساعت ۱۶:۱۶
    برنامه در حالت عادی و با دستور dotnet prog.dll بدرستی در سرور اجرا میشود ولی بعد از هاست شدن در IIS در فایل log خطای زیر صادر می‌شود:
    ... System.Data.SqlClient.SqlException (0x80131904): 
    The SELECT permission was denied on the object  ...

    • #
      ‫۵ سال و ۹ ماه قبل، چهارشنبه ۲۱ آذر ۱۳۹۷، ساعت ۱۶:۳۵
      مجوز دسترسی به دیتابیس مورد نظر رو ندارین.
    • #
      ‫۵ سال و ۹ ماه قبل، چهارشنبه ۲۱ آذر ۱۳۹۷، ساعت ۱۶:۳۸
      حداقل دو دلیل را می‌تواند داشته باشد:
      - کاربر application pool برنامه (و یا کاربری که توسط آن به بانک اطلاعاتی متصل می‌شوید)، دسترسی مناسبی را به SQL Server ندارد. در قسمت مدیریت کاربران SQL Server، این کاربر باید حداقل دسترسی‌های db_datareader و db_dataweriter را بر روی دیتابیس شما داشته باشد.
      - کوئری‌های شما بر اساس اسکیمای dbo صادر می‌شوند، اما اسکیمای واقعی بانک اطلاعاتی موجود در هاست، برای کاربر شما مثلا user1 است و نه dbo مدیریتی. در این حالت نمی‌توانید کوئری‌هایی مانند select * from dbo.table1 را صادر کنید. باید کوئری‌های شما با اسکیمای جدید select * from user1.table1 اجرا شوند.
      این موارد در نظرات سری EF Code First بررسی شده‌اند و در اینجا هم تفاوتی نمی‌کنند؛ چون موارد پایه‌ای مدیریت دسترسی‌های SQL Server هستند.
      • #
        ‫۵ سال و ۹ ماه قبل، چهارشنبه ۲۱ آذر ۱۳۹۷، ساعت ۱۶:۴۹
        - IIS APPPOOL\TestAppPool به عنوان یک User برای SQL Server تعریف شده و دسترسی کامل به دیتابیس مورد نظر براش قرار داده شده!
        - همچنین Query دریافت اطلاعات جدول که لاگ میشود بدون مشکل در سرور اجرا می‌شود و در واقع اسکیمای بانک اطلاعاتی با دستور SQL مورد نظر یکی است!
  • #
    ‫۵ سال و ۶ ماه قبل، یکشنبه ۱۹ اسفند ۱۳۹۷، ساعت ۱۱:۴۵
    یک نکته‌ی تکمیلی: دریافت خطای «HTTP Error 500.30 - ANCM In-Process Start Failure» پس از فعالسازی هاست درون پروسه‌ای از نگارش 2.2 به بعد
    در نگارش فعلی این ماژول درون پروسه‌ای، متد Directory.GetCurrentDirectory بجای اینکه مسیر برنامه را باز گرداند، مسیر C:\windows\system32\inetsrv یا همان پروسه‌ی IIS را بر می‌گرداند و باید به این موضوع دقت داشت. برای مثال ممکن است مسیر بانک اطلاعاتی برنامه پیدا نشود و یا فایل تنظیمی قابل خواندن نباشد. چند مثال از این نوع: - ASP.NET Core Configuration Issue with In Process Hosting   

    و یا کلا آن‌را در فایل csproj خاموش کنید (هر چند اگر SDK متناسبی را نصب کرده باشید (آخرین نگارش پایدار آن‌را)، این مشکل نباید وجود داشته باشد):
    Change this section ...
    
    <PropertyGroup>
        <TargetFramework>netcoreapp2.2</TargetFramework>
        <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
      </PropertyGroup>
    
    to the following ...
    
    <PropertyGroup>
        <TargetFramework>netcoreapp2.2</TargetFramework>
        <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
        <AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName>
      </PropertyGroup>
    • #
      ‫۵ سال و ۵ ماه قبل، جمعه ۲ فروردین ۱۳۹۸، ساعت ۱۳:۴۴
      یک نکته‌ی تکمیلی: دریافت خطای «HTTP Error 502.5 — ANCM Out-Of-Process Startup Failure»
      راه حل: پس از نصب SDK جدید، یکبار dotnet restore را اجرا کنید تا شماره نگارش بسته‌ی Microsoft.AspNetCore.App به روز شود؛ یا از روش زیر استفاده کنید:
      dotnet tool update -g dotnet-outdated
      dotnet outdated -u
      dotnet restore
    • #
      ‫۱ سال و ۱۰ ماه قبل، دوشنبه ۱۱ مهر ۱۴۰۱، ساعت ۱۸:۳۰
      یک مورد در مورد خطای 500.30 اگر اشتباهی در فایل appSettings وجود داشته باشد نیز این خطا دریافت میگردد که میتوان مشکل آن را در فایل‌های لاگ دید.
  • #
    ‫۵ سال و ۱ ماه قبل، جمعه ۱۸ مرداد ۱۳۹۸، ساعت ۱۵:۳۷
    یک نکته‌ی تکمیلی
    خود مایکروسافت هم لیست خطاهای ممکن را به همراه راه حل‌های پیشنهادی، مستند کرده‌است.
  • #
    ‫۴ سال و ۱۱ ماه قبل، چهارشنبه ۱۰ مهر ۱۳۹۸، ساعت ۱۳:۵۴

    - رفع خطای اجرای برنامه در Windows 8.1 / Windows Server 2012 R2
    The program can't start because api-ms-win-crt-runtime-l1-1-0.dll is missing from your computer. 
    Try reinstalling the program to fix this problem.
    KB2999226 را نصب کنید.

    - رفع خطای اجرای برنامه در Windows 7 / Windows Server 2008 R2 
    the library hostfxr.dll was found, but loading it from C:\<path_to_app>\hostfxr.dll failed
    KB2533623 را نصب کنید.
  • #
    ‫۴ سال و ۱۱ ماه قبل، یکشنبه ۲۱ مهر ۱۳۹۸، ساعت ۱۲:۰۸
    یک نکته‌ی تکمیلی: پس از نصب NET Core Hosting Bundle. پیام «No .NET Core SDKs were detected» مشاهده می‌شود

    با نصب NET Core Hosting Bundle.، هر دو بسته‌ی 32 بیتی و 64 بیتی آن بر روی سیستم نصب می‌شوند. در این حالت زمانیکه دستور dotnet --info را اجرا می‌کنیم، به صورت پیش‌فرض از مکان 32 بیتی خوانده و اجرا خواهد شد. به همین جهت نمی‌تواند آمار SDK صحیحی را که 64 بیتی است، ارائه دهد. برای رفع این مشکل این مسیر را طی کنید:
    - Control Panel\All Control Panel Items\System (یا همان کلیک راست بر روی آیکن Computer و انتخاب گزینه‌ی Properties آن) و سپس انتخاب گزینه‌ی Advanced system settings.
    - در دیالوگ System properties باز شده، در برگه‌ی Advanced آن، بر روی دکمه‌ی Environment variables کلیک کنید.
    - در اینجا user variables و system variables را مشاهده می‌کنید. در هر دو قسمت یاد شده، سطر Path را انتخاب کرده و بر روی دکمه‌ی Edit کلیک کنید.
    - در صفحه‌ی دیالوگ ویرایش Path، مسیر C:\Program Files\dotnet را به بالاتر از مسیر C:\Program Files (x86)\dotnet با کلیک بر روی دکمه‌ی Move up، انتقال دهید:


    به این صورت اینبار دستور dotnet --info شما از مسیر 64 بیتی خوانده شده و دیگر پیام یافت نشدن SDK را مشاهده نخواهید کرد.
  • #
    ‫۴ سال و ۱۰ ماه قبل، یکشنبه ۵ آبان ۱۳۹۸، ساعت ۱۴:۵۲
    در رابطه با خطای 500.19
    من از برنامه‌ی خودم پابلیش گرفته بودم و NET Core 2.2 Runtime & Hosting Bundle رو هم نصب کرده بودم، ولی باز هم خطای 500.19 رو می‌دیدم؛ تا اینکه در قسمت permission‌های IIS، این دسترسی رو اضافه کردم و دسترسی کامل بهش دادم:

    • #
      ‫۴ سال و ۱۰ ماه قبل، یکشنبه ۵ آبان ۱۳۹۸، ساعت ۱۵:۴۹
      کمی بالاتر در مورد خطای 500.19 ای که نیاز به دسترسی بیشتری دارد، توضیح داده شد. افزودن authenticated users زیاده روی هست. از لیست تمام این authenticated users، فقط یک یوزر IIS AppPool\DefaultAppPool باید دسترسی به پوشه‌ی برنامه‌ی شما را داشته باشد.