Вопрос

Я работаю над проектом, который должен получить фактический URL и использовать его в самом маршруте. Все, что я вижу, читаю и тестирую, позволяет маршруту захватывать элементы после URL сайта. Это то, что я пробовал, и каждый раз, когда просто говорят, что сайт пуст (что, вероятно, из-за пустого значения по умолчанию). Можете ли вы дать мне какие-либо сообщения о том, чтобы маршрут также использовал корневой URL? Цель - один веб-сайт, который обработает URL-адрес и направит меня к разным внутренностям в представлении.

Вот код, который я пробовал, но мне не повезло за пределами localhost

            routes.MapRoute(
            "PageRouter",
            "{site}/{*url}",
            new { controller = "PageRouter", action = "RoutePage", site = "", url = "" }
        );

Ваша помощь очень ценится. Заранее спасибо

Это было полезно?

Решение

Как насчет использования HttpContext.Request.RawUrl внутри действия контроллера. Я могу что-то здесь упустить. Откуда берется URL, который вы хотите прочитать? Это текущая страница или другая страница?

Другие советы

Ответ Натана является частью ответа. HttpContext.Request.RawUrl разрешает доступ к этой информации, но вместо этого в файле Global.asax.cs. Это делается в событии Application_BeginRequest. Но хитрость (и, пожалуйста, прокомментируйте, если кто-то знает более элегантный способ сделать это), но мы вставляем используемый URL в оставшийся путь маршрута, чтобы его можно было подобрать в методе MapRoute. Так что http://subdomain.domain.net/url " сайт будет выглядеть как " http://subdomain.domain.net/subdomain.domain .net / url , чтобы его можно было найти в части {site} команды MapRoute. Это не будет показано пользователю, но затем позволит нам принимать решения внутри приложения на основе полученного URL. Это звучит нормально? Комментарии приветствуются, если это кажется сумасшедшим способом сделать это для поглощения корневого URL.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top