Web サイトの URL を ASP.NET MVC のルートに渡します
-
05-07-2019 - |
質問
私は実際の URL を取得してルート自体で使用する必要があるプロジェクトに取り組んでいます。私が見ているもの、読んでいるもの、テストしているものすべてで、ルートがサイト URL の後の項目を取得できるようになります。これは私が試したものですが、毎回単にサイトが空白であると表示されます(おそらくデフォルトが空白であるためです)。ルートでルート URL も利用できるようにすることについて、何かアドバイスをいただけますか?目標は、URL を処理し、ビュー内に入ると別の内部に私をルーティングする 1 つの Web サイトです。
これは私が試したコードですが、ローカルホストの外ではうまくいきませんでした
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://サブドメイン.ドメイン.net/url" サイトは " のように表示されますhttp://サブドメイン.ドメイン.ネット/サブドメイン.ドメイン.ネット/url そのため、MapRoute コマンドの {site} 部分で取得できます。これはユーザーには表示されませんが、受信した URL に基づいてアプリ内で決定を下すことができます。これは正気だと思われますか?ルート URL を吸収するためにこれがクレイジーな方法であると思われる場合は、コメントを歓迎します。