HTTP Error 500.21 - Internal Server Error Handler "aspNetCore" has a bad module "AspNetCoreModule" in its module list
پیشنیازهای کار با IIS Express توسط Rider
- نصب IIS Express به صورت جداگانه
- نصب بستهی هاستینگ ASP.NET Core برای IIS
این مورد برای اضافه شدن AspNetCoreModuleV2 به IIS Express خام فوق، الزامی است.
معرفی بستهی هاستینگ ASP.NET Core به IIS Express
پس از نصب این بستهها، فایل واقع در مسیر زیر را برای یافتن واژهی AspNetCoreModule جستجو کنید (یک چنین فایلی در مسیر 64 بیتی C:\Program Files\IIS Express\config\templates\PersonalWebServer نیز وجود دارد):
%PROGRAMFILES(x86)%\IIS Express\config\templates\PersonalWebServer\applicationhost.config
%PROGRAMFILES(x86)%\IIS Express\Asp.Net Core Module\V2
- ابتدا پوشهی C:\Program Files (x86)\IIS\Asp.Net Core Module را به درون پوشهی C:\Program Files (x86)\IIS Express کپی کنید.
- سپس پوشهی C:\Program Files\IIS\Asp.Net Core Module را به درون پوشهی C:\Program Files\IIS Express کپی کنید.
در فایل C:\Program Files\IIS Express\config\templates\PersonalWebServer\applicationhost.config
<add name="AspNetCoreModule" image="C:\Program Files\IIS Express\aspnetcore.dll" /> <add name="AspNetCoreModuleV2" image="C:\Program Files\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll" />
<add name="AspNetCoreModule" image="C:\Program Files (x86)\IIS Express\aspnetcore.dll" /> <add name="AspNetCoreModuleV2" image="C:\Program Files (x86)\IIS Express\Asp.Net Core Module\V2\aspnetcorev2.dll" />
- ذیل تگ <sectionGroup name="system.webServer">، سطر زیر را اضافه کنید:
<section name="aspNetCore" overrideModeDefault="Allow" />
- ذیل تگ <system.webServer><modules>، دو سطر زیر را اضافه کنید:
<add name="AspNetCoreModule" lockItem="true" /> <add name="AspNetCoreModuleV2" lockItem="true" />
البته برای ذخیره سازی فایلهای موجود در Program Files، باید آنها را با دسترسی ادمین باز کنید. برای مثال اگر از ++nodepad استفاده کنید، به صورت خودکار این مساله را تشخیص داده و دسترسی صحیح را درخواست میکند.
تنظیم Rider برای یافتن مسیر صحیح AspNetCoreModuleV2 نصب شده
در برنامهی Rider، از منوی File، قسمت settings آن، گزینهی Build, Execution, Deployment | IIS Express را انتخاب و سپس مسیرهای x86 و x64 را به صورت زیر تنظیم کنید:
البته دراپ داونهای این صفحه، به صورت خودکار این مسیرها را پر میکنند. فقط کافی است، مسیر صحیح را از طریق آنها انتخاب کنید.
- اکنون به ریشهی پروژهی خود مراجعه کرده و فایل idea\config\applicationhost.config. را در صورت وجود حذف کنید (البته بهتر است کل پوشهی idea. و همچنین vs. را (در صورت وجود) حذف کنید؛ هر دو را با هم. مهم!). برنامهی Rider، این فایل تنظیمات موقتی IIS Express را بر اساس دو فایل config\templates\PersonalWebServer\applicationhost.config ای که اصلاح کردیم، به صورت خودکار تولید میکند و حاوی تمام تغییرات فوق خواهد بود.
- فایل web.config واقع در ریشهی پروژه وب نیز بهتر است یک چنین محتوایی را داشته باشد:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified"/> </handlers> <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/> </system.webServer> </configuration>
تنظیمات IIS Express در Rider
تنظیمات پورت IIS Express، در فایل Properties\launchSettings.json پروژههای وب، قابل مشاهده و تغییر است. اگر نیاز به کار با HTTPS باشد، برنامهی Rider، پیام کوچکی را که در آن لینک setup certificate قرار دارد، نمایش میدهد و با کلیک بر روی آن، یک مجوز موقتی self-signed certificate تولید و نصب خواهد شد.
و یا در Rider، از منوی بالای صفحه که تنظیمات Build را نمایش میدهد، میتوان IIS Express را به عنوان اجرا کنندهی پروژه، انتخاب کرد. پس از انتخاب آن، یکبار دیگر از همان dropdown میتوان گزینهی edit configuration را انتخاب کرد تا تنظیمات مخصوص IIS Express، ظاهر شود.