Nancy Self-Host 404 ошибки - PullRequest
1 голос
/ 29 мая 2020

Я пытаюсь создать простой собственный хост Нэнси. У меня все работает, если я отправляю правильный путь, но если я отправляю пустой путь после порта №, я получаю ошибку 404. Если я отправляю недопустимый путь, я получаю ошибку 500. Я хочу иметь всеобъемлющий Get который используется всякий раз, когда запрос отправляется с недопустимым путем.

Вот моя программа. cs

using System.Diagnostics;
using Nancy;
using Nancy.Hosting.Self;

namespace NancyDataService
{
    class Program
    {
        static void Main(string[] args)
        {
            var uri = new Uri("http://localhost:8080");
            var hostConfig = new HostConfiguration();
            hostConfig.UrlReservations.CreateAutomatically = true;
            hostConfig.RewriteLocalhost = false;
            using (var nancyHost = new NancyHost(uri, new DefaultNancyBootstrapper(), hostConfig))
            {
                nancyHost.Start();

                Console.WriteLine("Nancy now listening on http://localhost:8080. Press enter to stop");
                try
                {
                    Process.Start("http://localhost:8080");
                }
                catch (Exception)
                {
                }
                Console.ReadKey();
            }

            Console.WriteLine("Stopped. Good bye!");
        }
    }
}

Вот мой основной модуль:

using Nancy;

namespace NancyDataService
{
    public class MainModule: NancyModule
    {
        public MainModule()
        {
            string json_error = @"{""status"":""fail"",""reason"":""{0}""}";
            string json;

            Get("test", parms =>
            {
                return "test";
            });

            // this is default if desired path not sent
            Get("{parm1}", parms =>
            {
                json = string.Format(json_error, "Invalid method name supplied");
                //return (Response)json;
                return json;
            });
        }
    }
}

I Мы изменили синтаксис Get в соответствии со способом Nancy 2.0. Я ожидал, что последний Get в приведенном выше коде будет обработан и выдаст мне сообщение об ошибке по умолчанию. Если я ввожу в браузере http://localhost:8080/, я получаю ответ с ошибкой 404. Если я ввожу http://localhost:8080/test, все работает нормально. Если я ввожу http://localhost:8080/anythingElse, я получаю ошибку 500, внутренняя ошибка сервера.

Я бы хотел иметь секцию получения "по умолчанию", чтобы любой неожиданный путь (включая вообще отсутствие пути) после порта №, потребуется эта ветка.

Кстати, это нацелено. Net Core 3.0, который, по словам Нэнси, может не работать. Предупреждение в моем пакете Nancy.Hosting.Self содержит предупреждение, в котором говорится, что он был восстановлен с использованием. Net Framework (4.6.1 - 4.8). Может быть, в этом проблема?

Есть идеи, как заставить это работать? Спасибо ...

1 Ответ

0 голосов
/ 29 мая 2020

Решено большинство проблем. Необходимо Get("/", ... для пустого пути и Get("/{parm}",... для неправильного пути. Кажется, что string.Format вызывает ошибку 500, но json_error.Replace("{0}", "new text") работает нормально. Что с этим?

...