IIS تعیناتی میں کنفیگریشن کی خرابی کو سمجھنا
Blazor پروجیکٹ کو IIS میں تعینات کرنا ایک ہموار عمل ہو سکتا ہے، لیکن بعض اوقات ایسی غلطیاں پیدا ہو جاتی ہیں جن کی تشخیص مشکل ہو سکتی ہے۔ ایک عام مسئلہ ڈویلپرز کا سامنا ہے۔ خرابی 500.19، جو عام طور پر کنفیگریشن پیج کے ساتھ کسی مسئلے کی نشاندہی کرتا ہے۔ یہ خرابی ایپلیکیشن کو صحیح طریقے سے لانچ ہونے سے روکتی ہے۔
خرابی 500.19 عام طور پر میں غلط کنفیگریشن کی طرف اشارہ کرتی ہے۔ web.config فائل، لیکن اس کا جائزہ لینے کے بعد بھی، غلطی برقرار رہ سکتی ہے۔ یہ صورت حال مایوس کن ہو سکتی ہے جب خود ترتیب میں کچھ بھی غلط نہ ہو۔ Blazor ایپلی کیشنز کو تعینات کرنے کی کوشش کرتے وقت ڈویلپرز کو اکثر اس کا سامنا کرنا پڑتا ہے، خاص طور پر جب غلطی کا پیغام مبہم لگتا ہے۔
کنفیگریشن کے مسائل کے علاوہ، سرور پر بنیادی اجازت کے مسائل یا لاپتہ اجزاء ہو سکتے ہیں۔ مثال کے طور پر، IIS اجازتوں کے مسائل یا غلط طریقے سے تشکیل شدہ ماحول بھی اس خرابی کو متحرک کر سکتے ہیں۔ تمام ضروری ماڈیولز اور اجازتوں کو یقینی بنانا کامیاب تعیناتی کے لیے ضروری ہے۔
اس آرٹیکل میں، ہم ان اقدامات کا پتہ لگائیں گے جو آپ مسائل کو حل کرنے کے لیے اٹھا سکتے ہیں۔ خرابی 500.19 اور کنفیگریشن کے مسائل کو حل کریں۔ web.config فائل کی جانچ کرکے، اجازتوں کی تصدیق کرکے، اور سرور کے ماحول کی جانچ کرکے، آپ مسئلے کی اصل وجہ کی نشاندہی کرسکتے ہیں۔
حکم | استعمال کی مثال |
---|---|
<aspNetCore> | یہ ٹیگ ASP.NET کور ایپلی کیشنز کے لیے مخصوص ہے اور اسے web.config فائل میں سیٹنگز کی وضاحت کرنے کے لیے استعمال کیا جاتا ہے جیسے کہ ایگزیکیوٹیبل کا راستہ، لاگنگ کنفیگریشنز، اور ہوسٹنگ ماڈل (اندر پروسیس یا آؤٹ آف پروسیس)۔ یہ بلیزر سرور سائڈ ایپلی کیشن کو IIS میں انضمام کی اجازت دیتا ہے۔ |
stdoutLogEnabled | یہ وصف، جو |
icacls | ونڈوز کمانڈ جو فائل سسٹم کی اجازتوں کو کنفیگر کرنے کے لیے استعمال ہوتی ہے۔ اس تناظر میں، اس کا استعمال IIS_IUSRS گروپ کو ضروری پڑھنے/لکھنے کی اجازت دینے کے لیے کیا جاتا ہے، اس بات کو یقینی بناتے ہوئے کہ Blazor ایپ کو مطلوبہ ڈائریکٹریز تک رسائی حاصل ہے۔ |
Install-WindowsFeature | یہ پاور شیل کمانڈ ونڈوز سرور پر فیچرز انسٹال کرتی ہے۔ اس صورت میں، یہ IIS اجزاء کو انسٹال کرتا ہے جیسے AspNetCoreModuleV2، جو IIS پر ASP.NET کور ایپلی کیشنز کو چلانے کے لیے درکار ہے۔ |
Get-WebGlobalModule | یہ پاور شیل کمانڈ ویب ایڈمنسٹریشن ماڈیول کا حصہ ہے اور IIS میں دستیاب تمام عالمی ماڈیولز کی فہرست دیتا ہے۔ یہاں اس بات کی تصدیق کے لیے استعمال کیا جاتا ہے کہ AspNetCoreModuleV2 انسٹال ہے، جو IIS پر Blazor ایپلیکیشنز کو چلانے کے لیے اہم ہے۔ |
AreAccessRulesProtected | یہ طریقہ .NET میں DirectorySecurity کلاس کا حصہ ہے اور چیک کرتا ہے کہ آیا ڈائریکٹری کی اجازتیں محفوظ ہیں (غیر وراثتی)۔ اس کا استعمال یونٹ ٹیسٹوں میں اس بات کی توثیق کرنے کے لیے کیا جاتا ہے کہ ایپلیکیشن کے لیے ڈائریکٹری کی اجازتیں درست طریقے سے ترتیب دی گئی ہیں۔ |
stdoutLogFile | یہ وصف اس راستے کی وضاحت کرتا ہے جہاں stdout لاگز کو محفوظ کیا جائے گا۔ یہ تعیناتی کے مسائل کو ڈیبگ کرنے میں ضروری ہے، کیونکہ یہ رن ٹائم کی غلطیوں کو پکڑتا ہے جب Blazor ایپ IIS کے اندر عمل میں آتی ہے۔ |
DirectorySecurity | ایک .NET کلاس فائل سسٹم ڈائریکٹریز کے لیے رسائی کنٹرول اور آڈٹ سیکیورٹی کو منظم کرنے کے لیے استعمال ہوتی ہے۔ اس مثال میں، یہ تصدیق کرنے کے لیے استعمال کیا جاتا ہے کہ یونٹ ٹیسٹنگ کے دوران Blazor ایپ ڈائرکٹری پر مناسب رسائی کنٹرول فہرستیں (ACLs) لاگو ہوتی ہیں۔ |
Write-Host | ایک PowerShell کمانڈ جو پیغامات کو کنسول میں آؤٹ پٹ کرتی ہے۔ اس صورت میں، یہ IIS اجازتوں یا ماڈیول کی تنصیب کی حیثیت کی جانچ یا ترمیم کرتے وقت فیڈ بیک فراہم کرتا ہے، تعیناتی کے عمل کے دوران ریئل ٹائم ڈیبگنگ میں مدد کرتا ہے۔ |
بلیزر تعیناتی کی خرابی کے اسکرپٹ کو سمجھنا
فراہم کردہ پہلی اسکرپٹ کو کے اندر ممکنہ غلط کنفیگریشنز کو سنبھالنے کے لیے ڈیزائن کیا گیا ہے۔ web.config فائل، جو اکثر IIS میں 500.19 غلطی کا سبب بنتی ہے۔ یہاں اہم جزو ہے `
دوسرے حل میں، ہم پاور شیل کا استعمال کرتے ہوئے اجازت کے ممکنہ مسائل کو حل کرتے ہیں۔ دی icacls کمانڈ IIS_IUSRS گروپ کو ضروری اجازت دیتا ہے، جو Blazor ایپ کے لیے اس کی ڈائریکٹریز اور فائلوں تک رسائی کے لیے بہت ضروری ہے۔ ان اجازتوں کے بغیر، سرور ایپلیکیشن کو چلنے سے روک سکتا ہے، جس کی وجہ سے 500.19 جیسی خرابیاں پیدا ہوتی ہیں۔ PowerShell استعمال کرکے، آپ ان اجازتوں کو بیچ اسکرپٹ میں تیزی سے سیٹ کر سکتے ہیں، اس بات کو یقینی بناتے ہوئے کہ تمام ضروری صارفین اور گروپس نے ایپ کے فولڈر تک پڑھنے اور لکھنے تک رسائی حاصل کر لی ہے۔
تیسرا حل Blazor کنفیگریشن کے اندر stdout لاگنگ کو فعال کرکے ڈیبگنگ پر توجہ مرکوز کرتا ہے۔ چالو کرنا stdoutLogEnabled ایک مخصوص فائل میں لاگ ان کرکے رن ٹائم کی غلطیوں کو پکڑنے میں مدد کرتا ہے۔ یہ طریقہ تعیناتی کے دوران بہت اہم ہے، کیونکہ بہت سی خرابیاں جو براؤزر یا IIS ایرر لاگز کے ذریعے نظر نہیں آتیں کو یہاں پکڑا جا سکتا ہے۔ `./logs/stdout` فولڈر میں لاگز کو چیک کرکے، ڈویلپر مخصوص مسائل کا پتہ لگاسکتے ہیں، چاہے وہ ایپلیکیشن کوڈ سے متعلق ہوں یا ماحول کی ترتیب کے مسائل سے۔
آخر میں، چوتھا اسکرپٹ چیک کرتا ہے کہ آیا AspNetCoreModuleV2 IIS میں انسٹال ہے۔ یہ پاور شیل کے ساتھ استعمال کیا جاتا ہے۔ Get-WebGlobalModule کمانڈ، جو سرور پر نصب تمام عالمی ماڈیولز کی فہرست دیتا ہے۔ اگر ماڈیول غائب ہے تو، بعد میں کمانڈ، ونڈوز فیچر انسٹال کریں۔، ضروری IIS اجزاء کو انسٹال کرتا ہے۔ یہ اس بات کو یقینی بناتا ہے کہ بلیزر ایپلی کیشن میں صحیح طریقے سے چلنے کے لیے تمام مطلوبہ انحصار موجود ہیں۔ ان ماڈیولز کے بغیر، Blazor ایپس IIS کے تحت کام نہیں کر سکتیں، جو 500.19 جیسی ترتیب کی خرابیوں کا باعث بنتی ہیں۔ یونٹ ٹیسٹنگ اسکرپٹ اس بات کو یقینی بناتا ہے کہ ڈائرکٹری کی اجازتیں اور IIS ماڈیول کی ترتیبات درست طریقے سے لاگو ہوں، تعیناتی کے عمل کے لیے توثیق کی ایک اضافی پرت فراہم کرتی ہے۔
حل 1: web.config میں ترمیم کرکے بلیزر کی تعیناتی کی خرابی کو حل کرنا
ASP.NET کور کنفیگریشن کا استعمال اور IIS کے لیے درست سیٹ اپ کو یقینی بنانا۔
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="" verb="" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\BlazorApp2.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
<!--Ensure the right handler is mapped, and the processPath is correct.-->
حل 2: IIS پر اجازت کے مسائل کو حل کرنا
IIS_IUSRS گروپ کو درست اجازتیں حاصل کرنے کو یقینی بنانے کے لیے PowerShell استعمال کرنا۔
# PowerShell script to set proper permissions for the application directory
param (
[string]$path = "C:\inetpub\wwwroot\BlazorApp"
)
# Grant read and write permissions to IIS_IUSRS
icacls $path /grant "IIS_IUSRS:(OI)(CI)RX"
icacls $path /grant "IIS_IUSRS:(OI)(CI)(F)"
Write-Host "Permissions set successfully on $path"
# Make sure this script is run with administrative privileges.
حل 3: stdout لاگز کے ساتھ ایپلیکیشن کو ڈیبگ کرنا
خرابی کی تفصیلات حاصل کرنے کے لیے ASP.NET کور stdout لاگ استعمال کرنا۔
<configuration>
<system.webServer>
<aspNetCore processPath=".\BlazorApp2.exe" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</configuration>
# After enabling logging, ensure that the "logs" folder exists in the application directory.
# Check the logs for further information on what's causing the deployment issue.
# Disable stdout logging in production to avoid performance issues.
حل 4: اس بات کو یقینی بنانا کہ IIS ماڈیولز درست طریقے سے انسٹال ہوں۔
اس بات کی تصدیق کرنا کہ بلیزر ایپلیکیشن کے لیے درست IIS ماڈیولز فعال ہیں۔
# PowerShell script to check if IIS modules are installed
Import-Module WebAdministration
$modules = Get-WebGlobalModule | Where-Object {$_.Name -eq "AspNetCoreModuleV2"}
if ($modules -eq $null) {
Write-Host "AspNetCoreModuleV2 is missing. Installing the module..."
Install-WindowsFeature -Name Web-Asp-Net45
} else {
Write-Host "AspNetCoreModuleV2 is already installed."
}
حل 5: یونٹ کی ترتیب اور اجازتوں کی جانچ کرنا
کنفیگریشن کی بیک اینڈ کی توثیق کے لیے NUnit کا استعمال کرتے ہوئے یونٹ ٹیسٹنگ سیٹ اپ۔
using NUnit.Framework;
namespace BlazorApp.Tests
{
public class DeploymentTests
{
[Test]
public void TestPermissionsAreSetCorrectly()
{
var directory = "C:\\inetpub\\wwwroot\\BlazorApp";
var permissions = new System.Security.AccessControl.DirectorySecurity(directory, System.Security.AccessControl.AccessControlSections.All);
Assert.IsTrue(permissions.AreAccessRulesProtected == false, "Permissions are incorrect!");
}
}
}
# This unit test validates whether the directory permissions are correctly set.
بلیزر کی تعیناتیوں کے لیے IIS کنفیگریشن کی تلاش
IIS پر بلیزر پروجیکٹ کو تعینات کرتے وقت، ایک عام مسئلہ IIS ماڈیولز کی غلط ترتیب ہے، خاص طور پر AspNetCoreModuleV2. یہ ماڈیول IIS میں .NET کور ایپلی کیشنز کی میزبانی کے لیے ذمہ دار ہے اور اسے صحیح طریقے سے انسٹال کیا جانا چاہیے۔ اگر غائب ہے، تو یہ 500.19 جیسی خرابیوں کا سبب بن سکتا ہے۔ اس بات کو یقینی بنانا کہ اس ماڈیول کا درست ورژن فعال ہے Blazor ایپ کے صحیح طریقے سے کام کرنے کے لیے ضروری ہے۔ مزید برآں، اس بات کی تصدیق کرنا کہ ہوسٹنگ ماڈل کو "ان پروسیس" یا "آؤٹ آف پروسیس" پر سیٹ کیا گیا ہے ان مسائل کو حل کرنے کی کلید ہو سکتی ہے۔
ایک اور عنصر جو 500.19 کی خرابی کا باعث بن سکتا ہے ہدف کے ماحول میں ضروری اجزاء کی کمی ہے۔ مثال کے طور پر، کسی ایسے سرور پر Blazor ایپ چلانا جس میں مناسب .NET رن ٹائم ورژن انسٹال نہیں ہے، کنفیگریشن کے مسائل پیدا کر سکتا ہے۔ اس بات کو یقینی بنانا کہ سرور کا رن ٹائم وہی ہے جیسا کہ Blazor ایپ کامیاب تعیناتی کے لیے بہت ضروری ہے۔ مزید برآں، منتظمین کو اس بات کی بھی تصدیق کرنی چاہیے کہ IIS میں سائٹ کے لیے درست ایپلیکیشن پول استعمال کیا جا رہا ہے، خاص طور پر ایک جو کہ .NET کور کو استعمال کرنے کے لیے ترتیب دیا گیا ہے۔
ترتیب کے مسائل کے علاوہ، فولڈر کی اجازتیں تعیناتی کے عمل میں اہم کردار ادا کرتی ہیں۔ اگرچہ آپ نے اجازت دے دی ہے۔ IIS_IUSRS گروپ، اضافی حفاظتی اصول مخصوص فائلوں یا ڈائریکٹریوں تک رسائی کو روک سکتے ہیں۔ پاور شیل یا IIS مینیجر جیسے ٹولز کے ذریعے ان اجازتوں کی تصدیق اور ان میں ترمیم کرنا یقینی بناتا ہے کہ Blazor ایپ کو رن ٹائم آپریشنز کے لیے ضروری فائلوں تک کافی رسائی حاصل ہے۔ ماڈیول سیٹ اپ، رن ٹائم مطابقت، اور اجازتوں کا مجموعہ اس خرابی کو دور کرنے کے لیے بہت ضروری ہے۔
IIS Blazor کی تعیناتی کے مسائل کے بارے میں اکثر پوچھے گئے سوالات
- IIS میں غلطی 500.19 کا کیا مطلب ہے؟
- خرابی 500.19 بتاتی ہے کہ میں ایک غلط کنفیگریشن ہے۔ web.config فائل، IIS کو درخواست پر کارروائی کرنے سے روکتی ہے۔
- Blazor کی تعیناتی میں AspNetCoreModuleV2 کیا ہے؟
- دی AspNetCoreModuleV2 IIS کے اندر .NET کور ایپلی کیشنز کی میزبانی کے لیے ایک کلیدی ماڈیول ہے۔ یہ Blazor ایپلی کیشنز کو IIS کے ساتھ مربوط کرتا ہے، جس سے وہ مقامی طور پر چل سکتے ہیں۔
- میں ٹربل شوٹنگ کے لیے stdout لاگنگ کو کیسے فعال کروں؟
- stdout لاگنگ کو فعال کرنے کے لیے، آپ کو سیٹ کرنا ہوگا۔ stdoutLogEnabled میں سچ ہے web.config فائل یہ تعیناتی کے دوران رن ٹائم کی غلطیوں کو پکڑنے میں مدد کرتا ہے۔
- Blazor ایپ چلانے کے لیے IIS کو کن اجازتوں کی ضرورت ہے؟
- IIS_IUSRS گروپ کو ایپلی کیشن کی ڈائرکٹری پر پڑھنے، لکھنے اور اس پر عمل کرنے کی اجازت ہونی چاہیے، جسے استعمال کرکے کنفیگر کیا جا سکتا ہے۔ icacls.
- میں کیسے چیک کرسکتا ہوں کہ آیا سرور پر مطلوبہ .NET رن ٹائم انسٹال ہے؟
- آپ کمانڈ چلا کر انسٹال کردہ .NET رن ٹائمز کی تصدیق کر سکتے ہیں۔ dotnet --info سرور پر یہ تمام دستیاب رن ٹائم ورژن دکھائے گا۔
بلیزر کی تعیناتی کی خرابیوں کو حل کرنا
نتیجہ اخذ کرنے کے لیے، Blazor کی تعیناتی کی غلطیوں کا ازالہ کرنا جیسے 500.19 دونوں کے مکمل معائنہ کی ضرورت ہے۔ web.config فائل اور سرور کا ماحول۔ IIS میں درست ماڈیولز انسٹال ہونے کو یقینی بنانا اور اجازتوں کا جائزہ لینا ضروری ہے۔
مزید برآں، لاگنگ کو چالو کرنے اور اجازتوں کی تصدیق کے لیے پاور شیل کا استعمال پوشیدہ مسائل سے پردہ اٹھا سکتا ہے۔ ان علاقوں میں سے ہر ایک کو احتیاط سے ایڈریس کرکے، آپ کنفیگریشن کی غلطیوں کو ختم کر سکتے ہیں اور اپنی Blazor ایپلیکیشن کو کامیابی کے ساتھ تعینات کر سکتے ہیں۔
بلیزر تعیناتی کی خرابی کے حل کے لیے حوالہ جات اور وسائل
- IIS تعیناتی کے مسائل کو حل کرنے سے متعلق سرکاری دستاویزات کے لیے، ملاحظہ کریں۔ IIS میں Microsoft ASP.NET کور ہوسٹنگ .
- web.config فائل کو ترتیب دینے کے بارے میں مزید جاننے کے لیے، سے رجوع کریں۔ IIS کنفیگریشن حوالہ .
- اجازتوں کے بارے میں ایک مددگار گائیڈ اور IIS اجازتوں کو ترتیب دینے کے لیے icacls کے استعمال کے طریقہ پر پایا جا سکتا ہے۔ مائیکروسافٹ ICACLS کمانڈ کا حوالہ .