میزبانی ASP.NET (ویندوز): سایت، انتشار و SQL Server
خرید طرح ویندوزی، اتصال دامنه، ساخت سایت ASP.NET Core یا MVC، انتشار با Visual Studio، FTP، پایگاه دادهی SQL Server و خطایابی.
آخرین بهروزرسانی:
میزبانی ASP.NET روی ویندوز سرور ۲۰۲۵ و IIS اجرا میشود و برای برنامههایی است که با داتنت نوشته شدهاند: ASP.NET Core (نسخههای ۸، ۹ و ۱۰؛ MVC، Razor Pages، Blazor Server و Web API) و ASP.NET Framework 4.8 (MVC و WebForms). پایگاه دادهی آن SQL Server است و کد را میتوانید مستقیم از Visual Studio منتشر کنید. این آموزش همهی گامها را، از خرید تا انتشار برنامه و خطایابی، تصویری نشان میدهد.
برای سایتهای PHP، پایتون و Node.js آموزش ساخت سایت در میزبانی اشتراکی را ببینید.
گام ۱: خرید طرح
از منوی کناری میزبانی وب را باز کنید. طرحهای ویندوزی در بخش میزبانی ASP.NET (ویندوز) آمدهاند. هر طرح فضای دیسک، پردازنده، حافظه و شمار سایت و پایگاه دادهی خودش را دارد.

طرحها و بهاهای این تصویر نمونهاند؛ طرحهای واقعی را در پنل خودتان میبینید.
دکمهی خرید را بزنید و پرداخت را تأیید کنید. بهای یک ماه از کیف پول کسر میشود و حساب چند ثانیه بعد آماده است. تمدید خودکار روشن است و میتوانید در صفحهی حساب خاموشش کنید.

گام ۲: صفحهی حساب، FTP و Web Deploy
پس از آماده شدن، روی حساب (مثلاً Vira-host12) بزنید. بالای صفحه مصرف دیسک و حافظه، سررسید و نشانی سرور برای رکورد A را میبینید. زیر آن کارت دسترسی FTP است.

- host، port و user: نشانی سرور، درگاه ۲۱ و نام کاربری حساب (مثلاً
h12). - dir: پوشهی سایتها؛ هر سایت یک زیرپوشه دارد.
- انتشار از Visual Studio (Web Deploy): نشانی Web Deploy و Site name هر سایت (مثلاً
h12-31) که در Visual Studio لازم دارید.
برای گرفتن گذرواژه، دکمهی گذرواژهی تازه را بزنید. همین کاربر و گذرواژه برای FTP و Web Deploy هر دو کار میکند.

گذرواژه تنها همین یک بار نشان داده میشود. اگر گم شد، دوباره «گذرواژهی تازه» را بزنید؛ گذرواژهی پیشین از کار میافتد.
گام ۳: اتصال دامنه
پنل پیش از ساخت سایت بررسی میکند که دامنه واقعاً به این سرور برسد. یکی از این دو راه را انجام دهید:
- رکورد A: در DNS دامنه برای
@وwwwرکورد A با نشانی سرور (همان که در صفحهی حساب آمده) بسازید و چند دقیقه صبر کنید. - شبکهی توزیع ابر ویرا: اگر دامنه در شبکهی توزیع محتوا فعال است، همانجا رکورد A با نشانی سرور و حالت ابری بسازید. در این حالت گواهی HTTPS را خود شبکهی توزیع میدهد (حالت SSL «انعطافپذیر» و «هدایت خودکار به HTTPS» در تنظیمات دامنه)؛ دکمهی «گواهی رایگان» و «هدایت به HTTPS» سایت را نزنید.
گام ۴: ساخت سایت
در زبانهی سایتها، دکمهی سایت تازه را بزنید.

| نوع برنامه | برای | نکته |
|---|---|---|
| ASP.NET Core | MVC، Razor Pages، Web API | خروجی dotnet publish را بارگذاری کنید |
| Blazor / Razor Pages | Blazor Server و صفحههای Razor | WebSocket روشن است |
| ASP.NET MVC / WebForms | پروژههای .NET Framework 4.x | پوشهی خروجی Publish (همراه bin و web.config) |
- نام پوشهی سایت: تنها حروف کوچک لاتین، عدد و خط تیره؛ مثلاً
shop. - نسخه: باید با
TargetFrameworkپروژه یکی باشد؛ برنامهیnet8.0را با نسخهی ۸٫۰ بسازید. - دامنهها: هر خط یک دامنه؛ نخستین، نام اصلی سایت است.
- ریشهی وب درون پوشه (اختیاری): اگر خروجی را در زیرپوشهای مثل
publishگذاشتهاید. - متغیرهای محیطی: رمزشده نگه داشته میشوند و به برنامه میرسند. در ASP.NET Core هر کلید
appsettings.jsonرا میتوان با متغیر بازنویسی کرد؛ مثلاًConnectionStrings__Defaultبرای رشتهی اتصال وASPNETCORE_ENVIRONMENTبرای محیط اجرا. اینگونه گذرواژهی پایگاه داده در فایلهای پروژه نمیماند.
ذخیره را بزنید. سایت در IIS ساخته میشود و استخر برنامهی (Application Pool) جدای خودش را با سقف پردازنده و حافظهی طرح میگیرد.
گام ۵: انتشار برنامه
سه راه دارید؛ هر کدام که راحتترید.
راه اول: Visual Studio با Web Deploy
- روی پروژه راستکلیک کنید و Publish را بزنید.
- Web Server (IIS) و سپس Web Deploy را برگزینید.
- فیلدها را از کارت دسترسی پر کنید:
- Server: نشانی Web Deploy، مانند
https://87.107.94.32:8172/msdeploy.axd - Site name: نام سایت در کارت دسترسی، مانند
h12-31 - User name و Password: کاربر حساب و گذرواژهای که در گام ۲ گرفتید
- Validate Connection را بزنید و پرسش گواهی سرور را بپذیرید (Accept).
- Finish و سپس Publish را بزنید.
در تنظیمات Publish گزینهی Take app offline را روشن کنید تا هنگام انتشار، برنامهی در حال اجرا فایلها را قفل نکند.
راه دوم: بارگذاری zip در مدیر فایل
- در پوشهی پروژه فرمان
dotnet publish -c Release -o publishرا اجرا کنید (یا در Visual Studio، Publish به پوشه). - محتوای پوشهی خروجی را zip کنید.
- در زبانهی فایلها، پوشهی سایت را باز کنید، zip را با بارگذاری بفرستید و روی آن بازکردن را بزنید.

راه سوم: FileZilla یا WinSCP
- Host: نشانی سرور، Port: ۲۱
- Encryption: «Require explicit FTP over TLS» (FTP بی رمزگذاری پذیرفته نمیشود)
- User و Password: همان کاربر و گذرواژهی حساب
نخستین بار، گواهی سرور را تأیید کنید. پس از ورود، پوشهی sites و زیرپوشهی هر سایت را میبینید.
پیش از جایگزینی فایلهای برنامهی ASP.NET Core یک فایل خالی به نام app_offline.htm در پوشهی سایت بگذارید تا برنامه بایستد و DLLها آزاد شوند؛ پس از بارگذاری آن را پاک کنید. یا روی کارت سایت خاموش و پس از بارگذاری روشن را بزنید.کارت سایت

روی هر کارت، نوع و نسخه، وضعیت اجرا، وضعیت گواهی و دامنهها دیده میشود:
- خاموش / روشن: سایت را از دسترس خارج یا دوباره فعال میکند.
- راهاندازی دوباره: استخر برنامه را بازیافت میکند؛ پس از تغییر تنظیمات یا گیر کردن برنامه.
- گواهی رایگان: گواهی Let's Encrypt صادر میکند (تنها وقتی دامنه با رکورد A مستقیم به سرور اشاره کند). پس از صدور، در ویرایش سایت گزینهی هدایت همهی بازدیدها به HTTPS را روشن کنید. گواهی خودکار تمدید میشود.
- گزارش: رویدادهای خطا، خروجی برنامه و گزارش دسترسی (پایینتر).
- ویرایش: دامنهها، ریشهی وب و متغیرهای محیطی.
گام ۶: پایگاه دادهی SQL Server
در زبانهی پایگاه داده، پایگاه دادهی تازه را بزنید، یک نام کوتاه بدهید (مثلاً blog) و ساخت را بزنید. نام کامل با پیشوند حساب ساخته میشود (مثلاً h12_blog) و کاربری همنام آن تنها به همین پایگاه داده دسترسی دارد.

رشتهی اتصال آماده را بردارید و در appsettings.json یا بهتر، در متغیر محیطی ConnectionStrings__Default سایت بگذارید:
Server=localhost;Database=h12_blog;User Id=h12_blog;Password=...;TrustServerCertificate=True- برنامهی روی همین سرور با
localhostوصل میشود. - از رایانهی خودتان با SQL Server Management Studio: Server name همان نشانی سرور، Authentication «SQL Server Authentication» و کاربر و گذرواژهی پایگاه داده. در پنجرهی اتصال، گزینهی Trust server certificate را روشن کنید.
- مهاجرتهای Entity Framework را میتوانید با همین رشتهی اتصال از رایانهی خودتان اجرا کنید (
dotnet ef database update --connection "...").
گذرواژهی پایگاه داده هم تنها یک بار نشان داده میشود؛ با دکمهی گذرواژهی تازه در فهرست پایگاهها عوض میشود.
خطایابی و گزارشها
دکمهی گزارش روی کارت سایت سه نما دارد:

- رویدادهای خطا: خطاهایی که IIS و داتنت برای همین سایت ثبت کردهاند (مثل خطای راهاندازی برنامه یا استثنای کنترلنشده).
- خروجی stdout برنامه: برای ASP.NET Core، اگر در
web.configگزینهیstdoutLogEnabled="true"وstdoutLogFile=".\logs\stdout"را بگذارید، خروجی کنسول برنامه اینجا دیده میشود. پس از رفع مشکل خاموشش کنید. - دسترسی (IIS): درخواستهای رسیده به سایت؛ با حدود یک دقیقه تأخیر بهروز میشود.
| خطا | معنی | چه کنید |
|---|---|---|
| HTTP Error 500.30 | برنامهی ASP.NET Core بالا نیامد | رویدادهای خطا و خروجی stdout را ببینید؛ معمولاً رشتهی اتصال یا تنظیمات |
| HTTP Error 500.31 | نسخهی داتنت برنامه با سایت نمیخواند | سایتی با نسخهی همان TargetFramework بسازید |
| HTTP Error 500.19 | web.config نامعتبر است | فایل را بررسی کنید؛ خروجی publish خودش web.config درست میسازد |
| 403 در صفحهی اصلی | سند پیشفرضی در پوشه نیست | فایلها را در پوشهی درست (یا ریشهی وب) بگذارید |
نکتهها
- ساخت روی سرور انجام نمیشود: برنامه را روی رایانهی خودتان Publish کنید و خروجی را بفرستید.
- منابع: هر سایت سقف پردازنده و حافظهی طرح را دارد؛ اگر حافظه از سقف بگذرد، استخر برنامه خودکار بازیافت میشود.
- ایمیل: ارسال مستقیم ایمیل از درگاه ۲۵ بسته است؛ برای ارسال ایمیل از برنامه، از سرویس ایمیل خود با درگاه ۵۸۷ و احراز هویت استفاده کنید.
- جداسازی: هر حساب پوشه، کاربر ویندوز و استخرهای برنامهی جدا دارد و برنامهی هیچ حسابی به فایلها یا پایگاه دادهی حساب دیگر دسترسی ندارد.
