ورود

View Full Version : مشکل در فراخوانی webapi



mostafa_bahar
شنبه 10 آذر 1403, 15:28 عصر
سلام
یک web api نوشتم و اون رو در داخل iis سیستم سرور قراردادم
اینترنتم شاتل هست ip public گرفتم و پورت فوروارد کردم روی iis با پورت 80

وقتی web api را فراخوانی میکنم از طریق اینترنت کامل جواب میده
مشکل اینجاست که وقتی اینترنتم ایرانسل یا همراه اول باشه جواب نمیده

پورت فوروارد رو روی یه پورت مثلا 9550 میزارم و iis رو هم تغییر میدم ایرانسل و همراه اول هم جواب میده
ولی روی پورت 80 جواب نمیده

Tekyegah
پنج شنبه 09 اسفند 1403, 09:45 صبح
سلام! مشکلی که شما توضیح دادید ممکن است به چند عامل مختلف بپیوندد. در ادامه، علل ممکن و راه‌حل‌های آنها را بررسی می‌کنیم:

---

### 1. **بلاک شدن پورت 80 توسط اپراتور**
- **علل:** بعضی اپراتورهای اینترنت (مانند ایرانسل و همراه اول) پورت‌های معروف مثل 80 (HTTP) و 443 (HTTPS) را بلاک می‌کنند یا به صورت داخلی به سمت سرورهای خود منتقل می‌کنند.
- **راه‌حل:**
- برای تست، می‌توانید پورت‌های دیگری مثل 8080، 9550 یا 3000 را بررسی کنید. اگر با این پورت‌ها مشکلی نیست، احتمالاً پورت 80 توسط اپراتور بلاک شده است.
- اگر از پورت 80 استفاده کردن الزامی است، می‌توانید با پشتیبانی فنی اپراتور تماس بگیرید و از آنها بخواهید پورت 80 را آزاد کنند (اما این احتمالاً ممکن نیست).

---

### 2. **تنظیمات فایروال سیستم یا مودم**
- **علل:** فایروال سیستم یا مودم ممکن است پورت 80 را بلوک کرده باشد، حتی اگر پورت فوروارد شده باشد.
- **راه‌حل:**
- مطمئن شوید که فایروال سیستم شما (Windows Firewall) تنظیم شده است تا اجازه دسترسی به پورت 80 را بدهد:
1. بروید به `Control Panel` > `System and Security` > `Windows Defender Firewall`.
2. انتخاب کنید `Advanced settings` > `Inbound Rules`.
3. بررسی کنید که آیا قاعده‌ای برای باز کردن پورت 80 وجود دارد. اگر ندارد، قاعده جدیدی ایجاد کنید.
- بررسی کنید که در تنظیمات مودم، پورت 80 به درستی فوروارد شده است.

---

### 3. **استفاده از IP Public اشتباه**
- **علل:** اگر IP Public شما از طریق یک سرویس ثالث (مانند شاتل) اختصاص یافته باشد، ممکن است این سرویس تنها برای اپراتورهای خاص (مانند شاتل) کار کند.
- **راه‌حل:**
- از طریق وبسایت‌هایی مثل [whatismyip.com](https://www.whatismyip.com) IP Public خود را بررسی کنید و مطمئن شوید که IP Publicی که در پورت فوروارد استفاده کرده‌اید دقیقاً همان IP است که سیستم شما در شبکه اینترنت دارد.
- اگر از IP Static نیاز دارید، از اپراتور اینترنت خود درخواست IP Static دهید.

---

### 4. **مشکل در IIS**
- **علل:** ممکن است IIS تنظیم شده باشد تا فقط روی پورت‌های خاصی (مثل 9550) گوش کند و پورت 80 را نادیده بگیرد.
- **راه‌حل:**
- مطمئن شوید که IIS بر روی پورت 80 گوش می‌کند:
1. بروید به `IIS Manager`.
2. انتخاب کنید `Sites` > نام سایت شما.
3. در بخش `Bindings`، مطمئن شوید که یک binding برای پورت 80 وجود دارد.
4. اگر وجود ندارد، binding جدیدی اضافه کنید (`Type: http`, `Port: 80`).

---

### 5. **DNS و Hostname**
- **علل:** اگر از یک Domain Name استفاده می‌کنید، ممکن است DNS آن برای اپراتورهای خاص (مانند ایرانسل و همراه اول) به درستی حل نشود.
- **راه‌حل:**
- از طریق IP Direct (به جای Domain Name) تست کنید. اگر با IP جواب می‌دهد اما با Domain Name جواب نمی‌دهد، مشکل احتمالاً مربوط به DNS است.
- بررسی کنید که DNS Record (A Record) شما به درستی تنظیم شده است و به IP Public شما اشاره می‌کند.

---

### 6. **استفاده از HTTPS**
- **علل:** اگر وب‌سرویس شما با HTTP (پورت 80) ارائه می‌شود، اپراتورها ممکن است این نوع ترافیک را مسدود کنند. این موضوع در ایران بخصوص معمول است.
- **راه‌حل:**
- اگر امکان دارد، از HTTPS (پورت 443) استفاده کنید. برای این کار:
1. یک SSL Certificate برای سایت خود ایجاد کنید (می‌توانید از خدمات رایگان مثل Let's Encrypt استفاده کنید).
2. در IIS، binding جدیدی برای پورت 443 اضافه کنید و SSL Certificate را به آن وصل کنید.

---

### نتیجه‌گیری
- اگر مشکل فقط برای پورت 80 وجود دارد و برای پورت‌های دیگر (مثل 9550) کار می‌کند، احتمالاً پورت 80 توسط اپراتور بلاک شده است.
- برای حل این مشکل، می‌توانید از پورت‌های دیگر استفاده کنید یا از HTTPS (پورت 443) استفاده کنید.
- اگر مشکل همچنان وجود دارد، لطفاً نتایج تست‌های بالا را به اشتراک بگذارید تا بتوانم راهنمایی دقیق‌تری ارائه دهم.

امیدوارم که این راهنمایی‌ها مفید بوده باشند!

Tekyegah
پنج شنبه 09 اسفند 1403, 09:45 صبح
سلام! مشکلی که شما توضیح دادید ممکن است به چند عامل مختلف بپیوندد. در ادامه، علل ممکن و راه‌حل‌های آنها را بررسی می‌کنیم:

---

### 1. **بلاک شدن پورت 80 توسط اپراتور**
- **علل:** بعضی اپراتورهای اینترنت (مانند ایرانسل و همراه اول) پورت‌های معروف مثل 80 (HTTP) و 443 (HTTPS) را بلاک می‌کنند یا به صورت داخلی به سمت سرورهای خود منتقل می‌کنند.
- **راه‌حل:**
- برای تست، می‌توانید پورت‌های دیگری مثل 8080، 9550 یا 3000 را بررسی کنید. اگر با این پورت‌ها مشکلی نیست، احتمالاً پورت 80 توسط اپراتور بلاک شده است.
- اگر از پورت 80 استفاده کردن الزامی است، می‌توانید با پشتیبانی فنی اپراتور تماس بگیرید و از آنها بخواهید پورت 80 را آزاد کنند (اما این احتمالاً ممکن نیست).

---

### 2. **تنظیمات فایروال سیستم یا مودم**
- **علل:** فایروال سیستم یا مودم ممکن است پورت 80 را بلوک کرده باشد، حتی اگر پورت فوروارد شده باشد.
- **راه‌حل:**
- مطمئن شوید که فایروال سیستم شما (Windows Firewall) تنظیم شده است تا اجازه دسترسی به پورت 80 را بدهد:
1. بروید به `Control Panel` > `System and Security` > `Windows Defender Firewall`.
2. انتخاب کنید `Advanced settings` > `Inbound Rules`.
3. بررسی کنید که آیا قاعده‌ای برای باز کردن پورت 80 وجود دارد. اگر ندارد، قاعده جدیدی ایجاد کنید.
- بررسی کنید که در تنظیمات مودم، پورت 80 به درستی فوروارد شده است.

---

### 3. **استفاده از IP Public اشتباه**
- **علل:** اگر IP Public شما از طریق یک سرویس ثالث (مانند شاتل) اختصاص یافته باشد، ممکن است این سرویس تنها برای اپراتورهای خاص (مانند شاتل) کار کند.
- **راه‌حل:**
- از طریق وبسایت‌هایی مثل [whatismyip.com](https://www.whatismyip.com) IP Public خود را بررسی کنید و مطمئن شوید که IP Publicی که در پورت فوروارد استفاده کرده‌اید دقیقاً همان IP است که سیستم شما در شبکه اینترنت دارد.
- اگر از IP Static نیاز دارید، از اپراتور اینترنت خود درخواست IP Static دهید.

---

### 4. **مشکل در IIS**
- **علل:** ممکن است IIS تنظیم شده باشد تا فقط روی پورت‌های خاصی (مثل 9550) گوش کند و پورت 80 را نادیده بگیرد.
- **راه‌حل:**
- مطمئن شوید که IIS بر روی پورت 80 گوش می‌کند:
1. بروید به `IIS Manager`.
2. انتخاب کنید `Sites` > نام سایت شما.
3. در بخش `Bindings`، مطمئن شوید که یک binding برای پورت 80 وجود دارد.
4. اگر وجود ندارد، binding جدیدی اضافه کنید (`Type: http`, `Port: 80`).

---

### 5. **DNS و Hostname**
- **علل:** اگر از یک Domain Name استفاده می‌کنید، ممکن است DNS آن برای اپراتورهای خاص (مانند ایرانسل و همراه اول) به درستی حل نشود.
- **راه‌حل:**
- از طریق IP Direct (به جای Domain Name) تست کنید. اگر با IP جواب می‌دهد اما با Domain Name جواب نمی‌دهد، مشکل احتمالاً مربوط به DNS است.
- بررسی کنید که DNS Record (A Record) شما به درستی تنظیم شده است و به IP Public شما اشاره می‌کند.

---

### 6. **استفاده از HTTPS**
- **علل:** اگر وب‌سرویس شما با HTTP (پورت 80) ارائه می‌شود، اپراتورها ممکن است این نوع ترافیک را مسدود کنند. این موضوع در ایران بخصوص معمول است.
- **راه‌حل:**
- اگر امکان دارد، از HTTPS (پورت 443) استفاده کنید. برای این کار:
1. یک SSL Certificate برای سایت خود ایجاد کنید (می‌توانید از خدمات رایگان مثل Let's Encrypt استفاده کنید).
2. در IIS، binding جدیدی برای پورت 443 اضافه کنید و SSL Certificate را به آن وصل کنید.

---

### نتیجه‌گیری
- اگر مشکل فقط برای پورت 80 وجود دارد و برای پورت‌های دیگر (مثل 9550) کار می‌کند، احتمالاً پورت 80 توسط اپراتور بلاک شده است.
- برای حل این مشکل، می‌توانید از پورت‌های دیگر استفاده کنید یا از HTTPS (پورت 443) استفاده کنید.
- اگر مشکل همچنان وجود دارد، لطفاً نتایج تست‌های بالا را به اشتراک بگذارید تا بتوانم راهنمایی دقیق‌تری ارائه دهم.

امیدوارم که این راهنمایی‌ها مفید بوده باشند! :بوس: