Я разработал библиотеку NuGet с открытым исходным кодом для первой проблемы, которая неявно преобразует EveryMvc / Url в every-mvc / url.
Пунктирные URL-адреса намного удобнее для SEO и их легче читать. ( Больше на моем блоге )
Пакет NuGet: https://www.nuget.org/packages/LowercaseDashedRoute/
Чтобы установить его, просто откройте окно NuGet в Visual Studio, щелкнув правой кнопкой мыши Project и выбрав диспетчер пакетов NuGet, и на вкладке «Онлайн» введите «Строчный пунктирный маршрут», и он должен появиться.
Кроме того, вы можете запустить этот код в консоли диспетчера пакетов:
Install-Package LowercaseDashedRoute
После этого вы должны открыть App_Start / RouteConfig.cs и закомментировать существующий маршрут. ВызовMapRoute (...) и добавить вместо этого:
routes.Add(new LowercaseDashedRoute("{controller}/{action}/{id}",
new RouteValueDictionary(
new { controller = "Home", action = "Index", id = UrlParameter.Optional }),
new DashedRouteHandler()
)
);
Вот и все. Все URL-адреса строчные, пунктирные и неявно преобразуются без каких-либо дополнительных действий.
URL проекта с открытым исходным кодом: https://github.com/AtaS/lowercase-dashed-route
Когда дело доходит до второй проблемы, вы можете сделать это либо путем создания собственных маршрутов, либо путем обработки, не найденной с помощью специального механизма обработки ошибок, но маршрутизация будет быстрее, если вы ограничите URL-адреса профиля для согласования с некоторыми правилами ( например, не имеет косых черт), чтобы вы могли намного легче отличить его от других URL-адресов, например, от URL-адресов файлов содержимого, например .css .js и т. д.