我有一个现有的Dotnet Core 2.0 Console应用程序,该应用程序是运行时间较长的应用程序(直到用户退出它)。

我想为此添加一个Rest API,并想添加AspNet Core MVC来做到这一点,但是当我访问http://localhost:5006/api/values Kestrel时,我得到的只是一个404,并且正在处理请求,但并没有做到这一点。我的控制器!

我已将NuGet程序包添加到Microsoft.AspNetCore,Microsoft.AspNetCore.Mvc。我还添加了对Microsoft.AspNetCore.All的引用,但是这也不起作用,所以我现在删除了它,因为我不需要所有的膨胀。

我在我的应用程序中将此称为静态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文件夹中,我有一个名为ValuesControler的类。

namespace myApp.Controllers
{
    [Produces("application/json")]
    [Route("api/[controller]")]
    class ValuesController : Controller
    {
        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }
    }
}

最佳答案

为了使ASP.NET Core MVC识别您的Controller类,必须将它们声明为public。在您的示例中,您没有指定ValuesController是公共类-而是默认为internal,这就是为什么不选择它并导致404的原因:

public class ValuesController : Controller

关于c# - 将AspNet Core添加到标准Dotnet Core控制台应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47529734/

10-13 07:58
查看更多