【问题标题】:Asp.net core - Web Api on Class LibraryAsp.net core - 类库上的 Web Api
【发布时间】:2019-09-18 07:19:18
【问题描述】:

我正在尝试制作 n 层应用程序,其中 web 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" };
        }
    }
}

现在我的问题是如何在我的主项目中访问这个 web api。我已经在主项目中添加了对该类库的引用,但它不起作用。我的 api 不工作。尝试访问 api 时出现404 Page Not Found错误。 这是我的项目结构。

我做错了什么请帮帮我。

【问题讨论】:

  • 也许是this。控制器被引用,但应用不知道在任何程序集中寻找控制器,但它自己的。
  • 你为什么要把控制器放在一个单独的项目中?对于 N 层应用程序来说,这并不是真正需要的。
  • @mason Api 控制器仅在不同的项目中,但 mvc 控制器在主项目中。在不同的类中有 api 控制器是不好的做法
  • 不一定是坏事。但它给你带来了什么好处?我什么都想不出来。如果它使构建/运行您的应用程序变得更加困难......我认为您应该考虑您的方法的积极和消极因素,并决定它是否值得。
  • @mason 你能告诉我如何调用 web api 而不将其暴露在浏览器的网络选项卡上。

标签: c# asp.net-core class-library


【解决方案1】:

尝试在razor 类库中安装Microsoft.AspNetCore.Mvc 包。 在 startup.cs 中使用:

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

请参阅here

我通过创建一个 asp.net core2.2 MVC 项目和 razor 类库来测试你的场景,没有任何问题。以下是我的结构:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-14
    • 2016-08-04
    • 2019-08-06
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 2018-11-30
    相关资源
    最近更新 更多