代码之家  ›  专栏  ›  技术社区  ›  Matt

将AspNet Core添加到标准Dotnet Core控制台应用程序

  •  3
  • Matt  · 技术社区  · 7 年前

    我有一个现有的Dotnet Core 2.0控制台应用程序,它是一个长期运行的应用程序(直到用户退出)。

    我想给它添加一个RESTAPI,并想添加一个AspNet核心MVC来实现这一点,然而当我访问时,我得到的只是一个404 http://localhost:5006/api/values 红隼正在工作并接收请求,但它没有发送到我的控制器!

    我已将NuGet软件包添加到Microsoft。微软AspNetCore。AspNetCore。Mvc。我还添加了对Microsoft的引用。AspNetCore。但这一切都没有工作,所以我现在删除它,因为我不需要所有的膨胀。

    我在应用程序中称之为static Main()

    private static void StartWeb()
    {
        var host = WebHost
                  .CreateDefaultBuilder()
                  .UseKestrel()
                  .UseStartup<WebStartup>()
                  .UseUrls("http://*:5006")
                  .Build();
        host.Start();
    }
    

    这是WebStartup类

    namespace myApp
    {
        public class WebStartup
        {
            public IConfiguration Configuration { get; }
            public WebStartup(IConfiguration configuration)
            {
                Configuration = configuration;
            }
            public void ConfigureServices(IServiceCollection services)
            {
                services.AddMvc();
            }
            public void Configure(IApplicationBuilder app, IHostingEnvironment env)
            {
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
    
                app.UseMvc();
    
            }
        }
    }
    

    最后,在Controllers文件夹中,我有一个名为valuescontroller的类

    namespace myApp.Controllers
    {
        [Produces("application/json")]
        [Route("api/[controller]")]
        class ValuesController : Controller
        {
            [HttpGet]
            public IEnumerable<string> Get()
            {
                return new string[] { "value1", "value2" };
            }
        }
    }
    
    1 回复  |  直到 7 年前
        1
  •  7
  •   Kirk Larkin    7 年前

    为了ASP。NET Core MVC识别您的 Controller 类,则必须声明它们 public . 在您的示例中,您没有指定 ValuesController 是一个公共类-相反,它默认为 internal ,这就是为什么它没有被拾取并导致404:

    public class ValuesController : Controller