Я пытаюсь создать простой собственный хост Нэнси. У меня все работает, если я отправляю правильный путь, но если я отправляю пустой путь после порта №, я получаю ошибку 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). Может быть, в этом проблема?
Есть идеи, как заставить это работать? Спасибо ...