gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 20:46:52 25 4
gpt4 key购买 nike

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

我想为此添加一个 Rest API,并想添加 AspNet Core MVC 来执行此操作,但是当我访问 http://localhost:5006/api/values 时,我得到的只是 404 Kestrel 正在工作并接收请求,但它没有发送到我的 Controller !

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

我在我的应用程序中称之为 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 文件夹中,我有一个名为 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是一个公共(public)类 - 而它默认为 internal ,这就是为什么它没有被拾取并导致 404:

public class ValuesController : Controller

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com