آموزش جامع انتشار پروژه‌های وب ASP.NET Core روی IIS

دات‌نت، ASP.NET Core، دوره جامع برنامه‌نویسی وب، Visual Studio، پابلیش پروژه 1404/5/28
نویسنده: مدرس بهمن آبادی

آموزش جامع انتشار پروژه‌های وب ASP.NET Core روی IIS

پابلیش پروژه وب

مقدمه

انتشار یک پروژه وب ASP.NET Core روی Internet Information Services (IIS) یکی از روش‌های متداول برای میزبانی برنامه‌های وب در محیط‌های ویندوزی است. این فرآیند امکان ارائه برنامه‌های وب به‌صورت محلی یا روی سرورهای ویندوزی را برای کاربران فراهم می‌کند. با فرض اینکه IIS روی سیستم شما نصب شده است، این مقاله مراحل کامل انتشار یک پروژه ASP.NET Core روی IIS را به‌صورت گام‌به‌گام توضیح می‌دهد. آموزش نصب IIS و راه‌اندازی سایت در دوره جامع برنامه‌نویسی وب به‌طور کامل شرح داده شده است. این مقاله شامل پیش‌نیازها، پیکربندی پروژه، تنظیمات IIS، و رفع مشکلات رایج است.

پیش‌نیازها

برای انتشار پروژه ASP.NET Core روی IIS، به موارد زیر نیاز دارید:

  • سیستم‌عامل ویندوز سرور یا ویندوز 10/11 با IIS نصب‌شده.

  • دات‌نت SDK (نسخه‌ای سازگار با پروژه، مانند .NET 8.0 برای پروژه‌های جدید).

  • Visual Studio 2022 یا جدیدتر (اختیاری، برای ساده‌سازی فرآیند).

  • ماژول ASP.NET Core Hosting Bundle برای اجرای برنامه‌های ASP.NET Core روی IIS.

  • پروژه ASP.NET Core آماده انتشار (مانند MVC، Razor Pages، یا Web API).

  • دسترسی ادمین برای پیکربندی IIS و نصب ماژول‌ها.

نصب ASP.NET Core Hosting Bundle

آموزش جامع انتشار پروژه‌های وب

  1. به وب‌سایت رسمی مایکروسافت (دانلود Hosting Bundle) مراجعه کنید و نسخه مناسب Hosting Bundle را برای نسخه دات‌نت پروژه خود (مثلاً .NET 8.0) دانلود کنید.

  2. فایل نصبی را اجرا کنید. این ماژول شامل ASP.NET Core Runtime و IIS Module است.

  3. پس از نصب، سیستم را ری‌استارت کنید تا تغییرات اعمال شوند.

اطمینان از فعال بودن ویژگی‌های IIS

  1. به مسیر Control Panel > Programs > Turn Windows features on or off بروید.

  2. مطمئن شوید گزینه‌های زیر فعال هستند:

    • Internet Information Services > Web Management Tools > IIS Management Console

    • Internet Information Services > World Wide Web Services > Application Development Features > ASP.NET 4.x (یا نسخه مرتبط)

    • Internet Information Services > World Wide Web Services > Common HTTP Features (مانند Default Document و Static Content)

برای جزئیات بیشتر در مورد نصب و پیکربندی IIS، به دوره جامع برنامه‌نویسی وب مراجعه کنید که این موضوع را به‌طور کامل پوشش داده است.

گام‌های انتشار پروژه ASP.NET Core روی IIS

1. آماده‌سازی پروژه ASP.NET Core

تنظیمات پروژه

  1. فایل پروژه (.csproj) را بررسی کنید و از تعیین نسخه فریم‌ورک هدف (Target Framework) مطمئن شوید:

<PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>

حالت InProcess (پیش‌فرض در .NET Core 3.0 و بالاتر) به دلیل عملکرد بهتر توصیه می‌شود.

      2. اگر پروژه از پایگاه داده (مانند SQL Server) استفاده می‌کند، رشته اتصال را در appsettings.json تنظیم کنید:

 

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyAppDb;Trusted_Connection=True;MultipleActiveResultSets=true"
  }
}

 

انتشار پروژه

  1. در Visual Studio:

    • روی پروژه راست‌کلیک کنید و گزینه Publish را انتخاب کنید.

    • گزینه Folder را انتخاب کرده و مسیری محلی (مثلاً C:\Publish\MyApp) مشخص کنید.

    • در تنظیمات انتشار، یکی از گزینه‌های Framework-dependent یا Self-contained را انتخاب کنید:

                 Framework-dependent: فرض می‌کند دات‌نت روی سرور نصب است (حجم کمتر).

                 Self-contained: شامل تمام فایل‌های runtime است (حجم بیشتر، اما نیازی به نصب دات‌نت روی سرور نیست).

    • روی Publish کلیک کنید تا فایل‌های منتشرشده در مسیر مشخص‌شده ایجاد شوند.

  1. از خط فرمان:

 

dotnet publish -c Release -o C:\Publish\MyApp

این دستور پروژه را در حالت Release منتشر کرده و فایل‌ها را در پوشه C:\Publish\MyApp قرار می‌دهد.

2. پیکربندی IIS

آموزش جامع انتشار پروژه‌های وب

ایجاد Web Site در IIS

  1. برنامه IIS Manager را باز کنید (از منوی Start، عبارت inetmgr را جستجو کنید).

  2. در پنل سمت چپ، روی Sites راست‌کلیک کرده و Add Website را انتخاب کنید.

  3. تنظیمات زیر را وارد کنید:

  •    Site name: نامی برای سایت (مثلاً MyApp).
  • Physical path: مسیر پوشه منتشرشده (مثلاً C:\Publish\MyApp).
  • Binding: پورت (مثلاً 80 برای HTTP یا 443 برای HTTPS) و در صورت نیاز، یک Host Name مشخص کنید.
  • Application Pool: یک Application Pool جدید یا پیش‌فرض (مانند DefaultAppPool) انتخاب کنید.

برای اطلاعات دقیق‌تر درباره راه‌اندازی سایت در IIS، به دوره جامع برنامه‌نویسی وب مراجعه کنید که این مراحل را با جزئیات توضیح داده است.

تنظیم Application Pool

  1. در IIS Manager، به بخش Application Pools بروید.

  2. روی Application Pool مربوط به سایت (مثلاً MyApp) راست‌کلیک کرده و Basic Settings را انتخاب کنید.

  3. اطمینان حاصل کنید که .NET CLR Version روی No Managed Code تنظیم شده است، زیرا ASP.NET Core از runtime دات‌نت استفاده می‌کند.

  4. برای عملکرد بهینه، در Advanced Settings گزینه Start Mode را روی AlwaysRunning تنظیم کنید.

تنظیم دسترسی‌های پوشه

  1. به پوشه انتشار (مثلاً C:\Publish\MyApp) بروید.

  2. روی پوشه راست‌کلیک کرده و Properties > Security را باز کنید.

  3. به کاربر IIS_IUSRS دسترسی کامل (Full Control) بدهید تا IIS بتواند فایل‌ها را بخواند و اجرا کند.

3. تنظیمات اضافی برای HTTPS (اختیاری)

برای فعال‌سازی HTTPS:

  1. گواهینامه SSL معتبر (مثلاً از Let’s Encrypt یا ارائه‌دهنده دیگر) تهیه کنید.

  2. در IIS Manager، روی سایت خود کلیک کنید و Bindings را انتخاب کنید.

  3. یک binding جدید برای پورت 443 (HTTPS) اضافه کنید و گواهینامه SSL را انتخاب کنید.

  4. در فایل Program.cs یا Startup.cs، پشتیبانی از HTTPS را فعال کنید:

 

app.UseHttpsRedirection();

 

4. تست و دیباگ

  1. مرورگر را باز کنید و به آدرس سایت (مثلاً http://localhost یا https://yourdomain.com) بروید.

  2. در صورت بروز خطا:

    • خطای 500: لاگ‌های برنامه را بررسی کنید (در پوشه logs پروژه یا با فعال کردن stdoutLogEnabled در web.config).

    • خطای 403 (Forbidden): دسترسی‌های پوشه را دوباره بررسی کنید.

    • خطای 502.5: اطمینان حاصل کنید که Hosting Bundle نصب شده و Application Pool روی No Managed Code تنظیم شده است.

فعال کردن لاگ‌گیری

برای فعال‌سازی لاگ، فایل web.config را در پوشه انتشار ویرایش کنید:

<configuration>
  <system.webServer>
    <aspNetCore ... stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

 

لاگ‌ها در پوشه logs ایجاد می‌شوند.

5. به‌روزرسانی برنامه

برای به‌روزرسانی برنامه:

  1. پروژه را دوباره منتشر کنید (با dotnet publish یا Visual Studio).

  2. فایل‌های جدید را به پوشه انتشار کپی کنید.

  3. Application Pool را در IIS ری‌استارت کنید تا تغییرات اعمال شوند.

مثال: انتشار یک پروژه ساده ASP.NET Core

فرض کنید پروژه MVC ساده‌ای با ساختار زیر دارید:

// Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
var app = builder.Build();
app.UseRouting();
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

مراحل انتشار:

پروژه را با دستور زیر منتشر کنید:

dotnet publish -c Release -o C:\Publish\MyMvcApp

  1. یک Web Site جدید در IIS ایجاد کنید که به C:\Publish\MyMvcApp اشاره کند.

  2. Application Pool را روی No Managed Code تنظیم کنید.

  3. دسترسی‌های پوشه را برای IIS_IUSRS تنظیم کنید.

  4. در مرورگر به http://localhost بروید تا صفحه پیش‌فرض پروژه را مشاهده کنید.

نکات و بهترین روش‌ها

  • استفاده از Framework-dependent در صورتی که سرور شما دات‌نت را پشتیبانی می‌کند، حجم فایل‌های منتشرشده را کاهش می‌دهد.

  • بررسی نسخه دات‌نت برای اطمینان از سازگاری با نسخه پروژه ضروری است.

  • استفاده از HTTPS و محدود کردن دسترسی‌های پوشه برای امنیت توصیه می‌شود.

  • ابزارهایی مانند Application Insights برای نظارت بر عملکرد برنامه مناسب هستند.

  • تهیه بک‌آپ از فایل‌های موجود قبل از هر به‌روزرسانی ضروری است.

برای یادگیری عمیق‌تر درباره پیکربندی‌های پیشرفته IIS و بهینه‌سازی میزبانی، دوره جامع برنامه‌نویسی وب منبع کاملی است که این مباحث را به‌طور کامل پوشش می‌دهد.

رفع مشکلات رایج

  • خطای HTTP 500.19: فایل web.config مشکل دارد یا دسترسی‌های پوشه نادرست است.

  • خطای HTTP 502.5: Hosting Bundle نصب نشده یا مسیر فایل‌های منتشرشده نادرست است.

  • عدم بارگذاری استاتیک‌ها (CSS/JS): اطمینان حاصل کنید که app.UseStaticFiles() در Program.cs فراخوانی شده است.

  • مشکلات پایگاه داده: رشته اتصال را بررسی کنید و از دسترسی سرور پایگاه داده مطمئن شوید.

نتیجه‌گیری

انتشار پروژه‌های ASP.NET Core روی IIS با رعایت مراحل بالا فرآیندی ساده و قابل‌اعتماد است. نصب Hosting Bundle، پیکربندی صحیح IIS، و تنظیم دسترسی‌ها امکان میزبانی برنامه‌های وب را به‌راحتی فراهم می‌کند.

این روش برای محیط‌های تولیدی، تست، یا توسعه محلی مناسب است. برای اطلاعات بیشتر، به دوره جامع برنامه نویسی وب بخش پروژه ها مراجعه کنید.