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

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

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

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

امتیاز کاربر : 1654   رتبه کاربر : 1   تاریخ ثبت : 12:28 1399/05/30
پاسخ دهنده : fateme 13:09 1399/05/30

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

به این پاسخ امتیاز بدهید    0
امتیاز: 1617 رتبه: 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
امتیاز: 1617 رتبه: 2
1 نظر
Farnaz73 : خیلی ممنونم حل شد

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