دسته بندی ها
08:26 1399/05/30

اجرا نشدن api ها روی سرور

مشخصات سوال کننده :
کاربر : Farnaz73     امتیاز کاربر : 4     رتبه کاربر : 113
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2346
1 نظر
saedbfd : لطفا کدهایی که‌نوشتید رو قرار بدید

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 12:28 1399/05/30
هوش مصنوعی

پاسخ هوش مصنوعی

برای حل مشکل عدم اجرای 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 رخ می دهد یا نه.

با دنبال کردن این مراحل، باید بتوانید مشکل را شناسایی و برطرف کنید. اگر باز هم مشکلی وجود داشت، لطفاً جزییات بیشتری از خطاها یا تنظیمات سرور ارایه دهید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 13:09 1399/05/30

خب شما باید کدهایی که‌نوشتید رو قرار بدید تا بشه علت رو بررسی کنیم. با توضیحات به تنهایی هیچ کمکی نمیشه کرد متاسفانه.

به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
1 نظر
Farnaz73 : این کد یکی از api هاست بقیه رو به این شکل نوشتم. ورژن دات نت کورم 2.1 هستش

امتیاز کاربر : 4   رتبه کاربر : 113   تاریخ ثبت : 03:12 1399/05/30
پاسخ دهنده : Farnaz73 15:11 1399/05/30
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();
        }

    }

}

 

به این پاسخ امتیاز بدهید    0
امتیاز: 4 رتبه: 113
پاسخ دهنده : fateme 16:09 1399/05/30

ببینید بهتره در کنترلر خودتون به جای

 

[Route("api/AdviceApi")]

 

بنویسید

 

[Route("api/[controller]")]

 

در واقع مسیر رو کلی تعریف کنید.

 

در مرحله بعد در بالای کنترلر از دستور زیر هم استفاده کنید

 

[ApiController]

 

و در انتها هم بهتره که Api های خودتون رو در هیچ Area قرار ندید. همه WebApi ها رو بیارید در کنترلر اصلی پروژه. میتونید توی پوشه Controller اصلی پروژه یک پوشه جدید ایجاد کنید به نام ApiController و Api ها رو اونجا قرار بدید. مثل تصویر زیر

 

api در asp core

 

همه این موارد رو تست کنید اگر نشد و خطا داشتید یک بار حتما از لینکی که توی Postman قرار می دید و تنظیمات Postman یک عکس هم بذارید.

 

ویرایش شده در پنج شنبه 30 مرداد 1399 ساعت 16:15:44
به این پاسخ امتیاز بدهید    2
امتیاز: 1635 رتبه: 2
1 نظر
Farnaz73 : خیلی ممنونم حل شد

امتیاز کاربر : 4   رتبه کاربر : 113   تاریخ ثبت : 08:45 1399/06/01
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود