اجرا نشدن api ها روی سرور
سلام
من یه پروژه دات نت کور نوشتم که پنل مدیریت داره با ی سری api ها. تو لوکال وقتی api هارو با پستمن تست میکنم کامل اجرا میشه. الان من پروژه رو پابلیش کردم بردم رو سرور. پنل مدیریتی از سرور اجرا میشه ولی api ها رو با پستمن از سیستم خودم که تست میکنم اصلا اجرا نمیشن. ای پی سرور رو هم درست وارد میکنم.
ممنون میشم کمک کنین
پاسخ هوش مصنوعی
برای حل مشکل عدم اجرای API ها بر روی سرور، مراحل زیر را بررسی کنید:
1. **تنظیمات Firewall:** مطمین شوید که پورت API های شما (معمولا 80 برای http و 443 برای https) در firewall سرور باز است و درخواست های ورودی به آن اجازه می یابد.
2. **تنظیمات IIS یا وب سرور دیگر:** اگر از IIS استفاده می کنید، اطمینان حاصل کنید که برنامه شما به درستی به عنوان یک برنامه ASP.NET Core پیکربندی شده است و Endpoint های API در فایل launchSettings.json
به درستی تنظیم شده اند.
3. **CORS:** اگر درخواست API از منبعی غیر از origin سرور ارسال می شود، احتمالاً باید تنظیمات CORS را در برنامه خود فعال کنید. به این صورت:
services.AddCors(options => {
options.AddPolicy("AllowAll",
builder => {
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});
app.UseCors("AllowAll");
4. **لاگ ها:** لاگ های سرور را بررسی کنید تا ببینید آیا خطا یا هشدار خاصی در مورد درخواست های API وجود دارد. این می تواند به تشخیص مشکل کمک کند.
5. **تست با URL مستقیم:** به جای استفاده از Postman، می توانید از مرورگر خود برای دسترسی مستقیم به آدرس API ها استفاده کنید و ببینید که آیا خطای 404 یا 500 رخ می دهد یا نه.
با دنبال کردن این مراحل، باید بتوانید مشکل را شناسایی و برطرف کنید. اگر باز هم مشکلی وجود داشت، لطفاً جزییات بیشتری از خطاها یا تنظیمات سرور ارایه دهید.
خب شما باید کدهایی کهنوشتید رو قرار بدید تا بشه علت رو بررسی کنیم. با توضیحات به تنهایی هیچ کمکی نمیشه کرد متاسفانه.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using ZabanBackend.Models;
using ZabanBackend.Models.Services;
using ZabanBackend.Models.UnitOfWork;
using ZabanBackend.Models.ViewModels;
namespace ZabanBackend.Areas.AdminPanel.Controllers
{
[Produces("application/json")]
[Route("api/AdviceApi")]
[Area("AdminPanel")]
public class AdviceApiController : Controller
{
private readonly IUnitOfWork _context;
public AdviceApiController(IUnitOfWork context)
{
_context = context;
}
//ذخیره سوال کاربر اپ در ذیتابیس
// api/AdviceApi
public IActionResult Create([FromBody] AdviceViewModel viewmodel)
{
//create
Advice model = new Advice();
model.AppUsersId = viewmodel.AppUserID;
model.Question = viewmodel.Question;
_context.AdviceRepositoryUW.Create(model);
_context.save();
return CreatedAtRoute("FindAdviceById", new { id = model.AdviceId }, model);
}
//نمایش یک مشاوره خاص
//api/AdviceApi/id
[HttpGet("{id}", Name = "FindAdviceById")]
public string GetAnswerById(int id)
{
var item = _context.AdviceRepositoryUW.GetById(id);
if (item == null)
{
NotFound();
}
return item.Answer;
}
[HttpPut("{id}")]
public IActionResult Update([FromBody] Advice model)
{
var query = _context.AdviceRepositoryUW.GetById(model.AdviceId);
if (query == null)
{
NotFound();
}
query.Seen = model.Seen;
_context.AdviceRepositoryUW.Update(query);
_context.save();
return NoContent();
}
}
}
ببینید بهتره در کنترلر خودتون به جای
[Route("api/AdviceApi")]
بنویسید
[Route("api/[controller]")]
در واقع مسیر رو کلی تعریف کنید.
در مرحله بعد در بالای کنترلر از دستور زیر هم استفاده کنید
[ApiController]
و در انتها هم بهتره که Api های خودتون رو در هیچ Area قرار ندید. همه WebApi ها رو بیارید در کنترلر اصلی پروژه. میتونید توی پوشه Controller اصلی پروژه یک پوشه جدید ایجاد کنید به نام ApiController و Api ها رو اونجا قرار بدید. مثل تصویر زیر
همه این موارد رو تست کنید اگر نشد و خطا داشتید یک بار حتما از لینکی که توی Postman قرار می دید و تنظیمات Postman یک عکس هم بذارید.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2