Это не должно быть сложно. Да, Global.ascx - лучшее место для старта.
Первая карта маршрутов,
protected void RegisterRoutes(RouteCollection routes)
{
//Contact route for EN culture
routes.MapPageRoute(
"contactRouteEN",
"en/contact",
"~/Contact.aspx"
);
routes.MapPageRoute(
"contactRouteHE",
"he/contact",
"~/Contact.aspx"
);
}
protected void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
Это многое определяет маршруты.
Проблема, которую вы описываете, больше напоминает проблему глобализации, чем проблему маршрутизации URL. Часть URL-адреса проблемы будет косметической для пользователя, но, на мой взгляд, не затронет основную проблему. ASP.Net предоставляет средства для глобализации. Например, вы можете использовать LocalResources. Чтобы сделать это для страниц на корневом уровне приложений (не вложенных в папки)
Щелкните правой кнопкой мыши веб-сайт и выберите «Добавить папку ASP.Net».
Выберите App_LocalResources.
Щелкните правой кнопкой мыши папку App_LocalResources и выберите Добавить элемент.
Выберите файл ресурса.
Важно, чтобы вы называли файл в соответствии с культурой, на которую вы планируете нацелиться
Вы можете создать первый файл Contact.aspx.resx, который будет файлом ресурсов по умолчанию (может быть, на английском?)
ASP.Net попытается найти наиболее конкретную культуру, соответствующую файлам ресурсов, и будет использовать значение по умолчанию, если не указано более конкретное.
Соглашение об именах соответствует PageName.aspx.languageID-cultureId.resx
Вы можете иметь Contact.aspx.he.resx
Например, в элементе управления меткой вы можете установить его так:
<asp:Label ID="lbContactMessage" runat="server" Text="something" meta:resourcekey="yourmatchingkeyfromresourcefile"></asp:Label>
Подробнее см.
http://msdn.microsoft.com/en-us/library/c6zyy3s9.aspx