Маршрутизация MVC 2 - {Controller} .com / {action} / {id} - Возможно ли это? - PullRequest
1 голос
/ 05 декабря 2010

У нас есть несколько разных доменов, размещенных на собственном сервере. Все они представляют разные бренды, принадлежащие нашей компании, и мы хотели бы интеграции между каждым доменом, обмена моделями, представлениями, ресурсами и т. Д.

То, что я хотел бы сделать, это иметь {Controller} в качестве фактического домена, чтобы он выглядел как http://{Controller}.com/{Action}/{Id}.

Возможно ли это? Я видел, как люди делают это с поддоменами.

И, стоит ли это или есть более простой способ сделать то же самое.

Если это так, есть ли у кого-нибудь предложения о том, как я могу проверить это на Localhost?

1 Ответ

2 голосов
/ 05 декабря 2010

Да, это возможно и не так сильно отличается от маршрутизации на поддоменах. Если вы посмотрите на этот пример , он взглянет на заголовок Host, разделенный на '.' а затем берет первый элемент в массиве. Вы просто возьмете второй-последний элемент в этом массиве (так как «com» ​​- последний элемент). По сути, в вашем GetRouteData переопределении вы делаете что-то вроде этого:

// Retrieve the url - and split by dots:
var url = httpContext.Request.Headers["HOST"];
var urlParts = url.Split(".");

var routeData = new RouteData(this, new MvcRouteHandler());
routeData.Values.Add("controller", urlParts[urlParts.Count - 2]);

(проверка ошибок и валидация здесь явно не включены)

Что касается тестирования на localhost, вы можете просто добавить доменные имена, которые вы хотите протестировать, в файл hosts , указывая на 127.0.0.1.

...