未调用控制器构造函数



你好,我正在努力理解为什么我的请求没有进入我的api路由。它们似乎可以到达服务器,但在MVC中不会散开。

服务器运行在:http://localhost:9300
我请求的路由是:http://localhost:9300/api/getusers

程序

public class Program {
public static void Main(string[] args) {
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) {
var builder = new WebHostBuilder();
builder.UseStartup<Startup>();
var url = Address.Default.ToUrl();
builder.UseKestrel().UseUrls(url);
return builder;
}
}

启动

public class Startup {
public Startup(IConfiguration configuration) {
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services) {
services.AddOptions();
services.AddMvc();
}
public IConfiguration Configuration;
public void Configure(IApplicationBuilder app) {
Debug.WriteLine("Entered server"); //enters successfully here
app.UseMvc(); //does not enter the controller
}
}

控制器

这是一个采用GET方法的简单控制器。构造函数根本没有被调用。为什么会发生这种情况?当服务器第一次运行时我就知道了。。它会对自己的路线进行健康检查。

[ApiController]
class UserController : ControllerBase {
private static List<User> users = new List<User> {
new User{Id=0,Age=0,Name="Failed"},
new User{Id=12,Age=33,Name="Daniel"},
new User{Id=13,Age=33,Name="Marian"},
};
public UserController() {
Debug.WriteLine("Controller called"); //does not get called !
}
[HttpGet]
[Route("api/getusers")]
public async Task<HttpResponseMessage> GetUsers() {
await Task.Delay(1000);
return new HttpResponseMessage {
Content = new StringContent(users.ToJson()),
StatusCode = HttpStatusCode.OK
};
}
}

p.S我必须添加任何内容吗?我缺少的是,我密切关注了其他实现。

我已经使用dotnet new webapi创建了webapi项目。我已经设法通过更改类似控制器的访问修饰符来访问具有类似配置的url。尝试将public关键字添加到class UserController中。所以应该是public class UserController

如果有必要,我会提供更多关于项目配置的信息,而以上步骤没有帮助。

最新更新