我有一个现有的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/