اکوسیستم های مایکروسافت همیشه از نظر من یکی از بهترین ها بوده که زحمت و تلاش برنامه نویسان و توسعه دهندگان را تا حد ممکن کمتر می کند و از آن گذشته علاوه بر امنیت بالا، انعطاف پذیری و نظم و ترتیب و قابلیت های بسیاری دارد. برای مثال با استفاده از فریم ورک ASP.NET MVC می توانید تقریباً هر نیازی را پاسخ دهید. اما امروز تصمیم گرفتم مشکلی که خیلی از افراد با آن دست و پنجه نرم می کنند را تحت عنوان حل مشکل دسترسی به localhost در IIS از دیگر دستگاه ها بررسی کنم.
طرح مشکل :
مشکل از آن جا شروع می شود که توسعه دهنده وب اپلیکیشنی طراحی کرده و نیازمند این هست که در سایر دستگاه ها مثل موبایل، تبلت و یا هر کامپیوتر دیگری به غیر از کامپیوتری که در آن مشغول به طراحی و برنامه نویسی هست اجرا کند و نتیجه ی کار را ببیند. نحوه ی انجام این کار در وب سرور هایی مثل Apache به این صورت هست که آی پی کامپیوتر مرجع رو در مرورگر دستگاه های دیگه وارد می کنیم و تمام. اما در وب سرور IIS بایستی علاوه بر آی پی شماره ی پورت را هم به صورت برای مثال : 192.168.1.34:16640 وارد کنیم. با این حال باز هم وب سرور پاسخی نمی دهد یا با خطای 503 مواجه می شوید. برای حل این مشکل تا انتها همراه ما باشید.
– حل مشکل :
1 – Visual Studio را باز کرده و وارد پروژه ی خودتون برید. حالا پروژه رو کامپایل کرده و در حالت Debug قرار دهید. هنگامیکه مرورگر باز شد شماره ی پورت رو از آدرس یادداشت کنید. برای مثال آدرس : 192.168.1.34:16640 دارای شماره پورت 16640 است. (آی پی کامپیوتر خود را نیز می توانید از دستور netsh یا قسمت Networks & Sharing ویندوز به دست آورید.)
2- همانطور که در حالت Debug قرار دارید از قسمت Tray ویندوز بر روی IIS Express کلیک راست کرده و گزینه ی Show All Applications رو انتخاب کنید. همانطور که در تصویر زیر هم می بینید لیست اپلیکیشن ها برایتان باز می شود در قسمت Config محل ذخیره ی فایل تنظیمات وب سرور IIS ذخیره شده است. بر روی این مسیر کلیک کنید.
3- حال که فایل applicationhost.config برای تغییرات باز شده است، در داخل تگ <site> با خصوصیت name یا همان نام پروژه ی خود و در داخل دو تگ <bindings> عبارت زیر را وارد کنید :
<binding protocol=”http” bindingInformation=”*:16640:*” />
بدیهی است که شماره ی 16640 را با شماره ی پورت خود می بایست تغییر دهید.
4- حال فایل را ذخیره کنید و Visual Studio را ببندید. Command Prompt را در حالت Admin باز کنید و عبارت زیر را تایپ کنید :
netsh http add urlacl url=http://192.168.1.34:16640/ user=everyone
دوباره بدیهی است که آی پی و پورت خود را می بایست در دستور بالا جایگزین کنید.
5- حال به قسمت تنظیمات Firewall ویندوز رفته و Firewall را خاموش کنید. سپس Visual Studio را در حالت Admin باز کنید و پروژه ی خود را Debug کنید. حالا به سراغ گوشی یا کامپیوتر دیگری در شبکه ی خود رفته و آی پی کامپیوتر مرجع را به همراه پورت وارد کنید. در تصویر زیر دسترسی به وب سرور محلی از طریق گوشی اندروید را مشاهده می کنید.
تبریک! مشکلتان حل شد. فراموش نکنید که فایروال را دوباره فعال کنید.