数ページしかない単純な ASP.NET WebForms プロジェクトがあり、使いやすい URL を使用したいと考えています (SEO だけでなく、URL のローカリゼーションにも使用します)。私はこのプロジェクトに.NET 4.5を使用しており、役立つように見える Microsoft.AspNet.FriendlyUrls nuget パッケージを使用しようとしました。しかし、問題が 1 つあります。
私はGlobal.asaxにこれを持っています:
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
BundleConfig.RegisterBundles(BundleTable.Bundles);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
RouteConfig クラスは次のようになります。
public static class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute("HowItWorks", "ako-to-funguje", "~/HowItWorks.aspx");
routes.MapPageRoute("AboutUs", "o-nas", "~/AboutUs.aspx");
routes.MapPageRoute("Contact", "kontakt", "~/Contact.aspx");
var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings);
}
}
/HowItWorks と /ako-to-funguje (スロバキア語ロケール) の両方からアクセスした場合に、同じページを表示したいと考えています。
そして今、私は実際の問題に近づいています。ローカライズされたルート (/ako-to-funguje など) の 1 つを使用してサイトにアクセスすると、Request.GetFriendlyUrlFileVirtualPath() は空の文字列を返します (ただし、マスターで何かを実行したい "~/HowItWorks.aspx" を取得したい)ページ)。
string pageFileName = Request.GetFriendlyUrlFileVirtualPath();
switch (pageFileName)
{
case "~/AboutUs.aspx":
//do some stuff
break;
case "~/HowItWorks.aspx":
//do some stuff
break;
case "~/Contact.aspx":
//do some stuff
break;
default:
break;
}
/HowItWorks URL でサイトにアクセスすると、Request.GetFriendlyUrlFileVirtualPath() は期待どおり "~/HowItWorks.aspx" を返します。
/HowItWorks と /ako-to-funguje の両方からサイトにアクセスするときに、Request.GetFriendlyUrlFileVirtualPath() から "~/HowItWorks.aspx" を取得する方法はありますか?