Конструктор контроллера не вызывается - PullRequest
0 голосов
/ 12 ноября 2018

Здравствуйте, я пытаюсь понять, почему мои запросы не входят в мой маршрут 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
            };
        }
}

PS Нужно ли что-нибудь добавить?Что мне не хватает, я внимательно следил за другими реализациями.

1 Ответ

0 голосов
/ 12 ноября 2018

Я создал проект webapi, используя dotnet new webapi.Мне удалось добраться до URL с аналогичной конфигурацией, изменив модификатор доступа аналогичного контроллера.Попробуйте добавить public ключевое слово к class UserController.Так что это должно быть public class UserController

Я предоставлю больше информации о конфигурации проекта, если это необходимо, и шаг выше не поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...