Ядро Asp.net — веб-API в библиотеке классов

Я пытаюсь создать многоуровневое приложение, в котором веб-API хранится в другой библиотеке классов. Я создал класс контроллера TestController в другой библиотеке классов, и мой код выглядит так:

using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;

namespace PkrUni.SMS.Api
{
    [ApiController]
    [Produces("application/json")]
    [Route("api/[controller]")]
    public class TestController : ControllerBase
    {
        public IEnumerable<string> Get()
        {
            return new string[] { "Chris", "Hadfield" };
        }
    }
}

Теперь мой вопрос заключается в том, как я могу получить доступ к этому веб-API в моем основном проекте. Я уже добавил ссылку на эту библиотеку классов в основной проект, но она не работает. Мой айпи не работает. Ошибка 404 Страница не найдена появляется при попытке доступа к API. Это структура моего проекта.

Ядро Asp.net — веб-API в библиотеке классов

Что я делаю не так, пожалуйста, помогите мне.

Возможно, это. На контроллеры ссылаются, но приложение не знает, что нужно искать контроллеры в какой-либо сборке, кроме своей собственной.

Scott Hannen 29.04.2019 18:22

Почему вы все равно поместили контроллеры в отдельный проект? Это на самом деле не требуется для приложения N-Tier.

mason 29.04.2019 18:26

Контроллер @mason Api находится только в другом проекте, но контроллер mvc находится в основном проекте. Плохо ли иметь контроллер API в другом классе?

Chris Hadfield 29.04.2019 18:27

Это не обязательно плохо. Но какое преимущество это дает вам? Я не могу думать ни о каком. И если это усложняет создание/запуск вашего приложения... Я думаю, вам следует подумать о положительных и отрицательных сторонах вашего подхода и решить, стоит ли оно того.

mason 29.04.2019 18:29

@mason Можете ли вы сказать мне, как вызвать веб-API, не открывая его на сетевой вкладке браузера.

Chris Hadfield 29.04.2019 18:55

Почему вы хотите это сделать?

mason 29.04.2019 19:16

@mason Потому что я не хочу показывать другим, как я потребляю свой API

Chris Hadfield 29.04.2019 19:19

Вы не хотите, чтобы другие могли использовать ваш веб-API? Кто является целевой аудиторией для него? Кто должен быть, чтобы поговорить с ним?

mason 29.04.2019 19:20

@mason, я просто хочу это знать. Возможно ли это

Chris Hadfield 29.04.2019 19:23

Я даже не знаю, о чем вы спрашиваете, поэтому не могу сказать, возможно это или нет. Пожалуйста, ответьте на мой вопрос: кто должен иметь возможность общаться с вашим веб-API? Какой код будет отвечать за вызов вашего веб-API?

mason 29.04.2019 19:24

Давайте продолжить обсуждение в чате.

Chris Hadfield 29.04.2019 19:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
11
3 618
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте установить пакет Microsoft.AspNetCore.Mvc в библиотеку классов бритвы. И в startup.cs используйте:

services.AddMvc().AddApplicationPart(Assembly.Load(new AssemblyName("PkrUni.SMS.Area.Api")));

См. здесь.

Я тестирую ваш сценарий, создавая проект asp.net core2.2 MVC и библиотеку классов бритвы без каких-либо проблем. Ниже моя структура:

Другие вопросы по теме