Веб-сервер nanoFramework не распознает маршруты с атрибутами

Я настроил ESP32-WROVER в качестве веб-сервера, используя библиотеку nanoFramework.WebServer. Он запускает метод маршрута, когда я использую маршрут без атрибутов (//192.168.1.8/led), но не когда я использую маршрут с атрибутами (//192.168.1.8/led/on)

      using (WebServer server = new WebServer(80, HttpProtocol.Http, new Type[] { typeof(ControllerGpio) }))
{
    // Start the server.
    server.Start();

    Thread.Sleep(Timeout.Infinite);
}
      class ControllerGpio
{
    private static GpioController _gpioController = new GpioController();

    private static int ledPin = 2;

    [Route("led")]
    public void Led(WebServerEventArgs e)
    {
        try
        {
            var rawUrl = e.Context.Request.RawUrl.TrimStart('/');
            Debug.WriteLine($"Handling request {rawUrl}");
            var args = rawUrl.Split('/');
            if (args.Length < 2)
            {
                WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.BadRequest);
                return;
            }

            // If the pin is not open
            if (!_gpioController.IsPinOpen(ledPin))
            {
                // Open pin
                _gpioController.OpenPin(ledPin);
                // Set pin mode to output
                _gpioController.SetPinMode(ledPin, PinMode.Output);
            }

            if (args[1].ToLower() == "on")
            {
                _gpioController.Write(ledPin, true);
            }
            else if (args[1].ToLower() == "off")
            {
                _gpioController.Write(ledPin, false);
            }
            else
            {
                WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.BadRequest);
                return;
            }

            WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.OK);
        }
        catch (Exception)
        {
            WebServer.OutputHttpCode(e.Context.Response, HttpStatusCode.BadRequest);
        }
    }
}

Случай: //192.168.1.8/led Вывод отладки: светодиод обработки запроса

Случай: //192.168.1.8/led/on Вывод отладки:

2 ответа

Похоже на ошибку. Пожалуйста, поднимите вопрос на нашем GitHub здесь .

Не забудьте добавить приведенный выше образец кода, чтобы его было легче воспроизвести. Спасибо!

Наверное нужно декорировать дополнительными атрибутами

      
    [Route("led"), Route("led/on"), Route("led/off")]
    public void Led(WebServerEventArgs e)
Другие вопросы по тегам