[解決済み] ASP.NET MVCのアクションからの絶対URLの取得
質問
これはおそらくダミーの質問ですが、私は明確な指示を見つけることができません。私はMVC3ウェブアプリケーションにPOCOクラスを持っており、その唯一の目的は、サーバー内のいくつかのファイルのバックアップを管理することです。通常、それはバックアップを作成し、ファイル名をコントローラに返し、コントローラはそれをダウンロードするためのURLを含む電子メールを送信します。これは問題なく動作しますが、送信される絶対的なURLを構築することができません。どの関数を使っても、次のような相対的なURLになってしまいます。 /Backup/TheFile.zip のような相対 URL が得られます。 のような相対的なURLを取得します。 http://www.somesite.com/Backup/TheFile.zip . 試してみました。
VirtualPathUtility.ToAbsolute("~/Backup/SomeFile.zip");
HttpRuntime.AppDomainAppVirtualPath + "/Backup/SomeFile.zip";
Url.Content("~/Backup/SomeFile.zip");
のようなものを返しますが、これらはすべて /Backup/SomeFile.zipのようになります。 . 何か思い当たることはありますか?
どのように解決するのですか?
以下の方法で行うことができます。
var urlBuilder =
new System.UriBuilder(Request.Url.AbsoluteUri)
{
Path = Url.Action("Action", "Controller"),
Query = null,
};
Uri uri = urlBuilder.Uri;
string url = urlBuilder.ToString();
// or urlBuilder.Uri.ToString()
の代わりに
Url.Action()
の代わりに、このサンプルでは
Url.Content()
などのルーティングメソッドや、単にパスを渡すこともできます。
しかし、もし URL が
Controller
Action
になるのであれば、もっとコンパクトな方法があります。
var contactUsUriString =
Url.Action("Contact-Us", "About",
routeValues: null /* specify if needed */,
protocol: Request.Url.Scheme /* This is the trick */);
ここでのコツは、一度
protocol
/scheme を指定すると、絶対的な URL が得られるということです。
可能であれば、これをお勧めします
しかし、必要であれば、最初の例でより一般的な方法も持っています。
詳しくはこちらのブログで書いています。
http://gurustop.net/blog/2012/03/23/writing-absolute-urls-to-other-actions-in-asp-net-mvc/
関連
-
[解決済み】Unityでゲームオブジェクトのすべての子をループスルーして破壊する方法?
-
[解決済み] ファイルアップロード ASP.NET MVC 3.0
-
[解決済み] ASP.NET MVC Frameworkで複数のサブミットボタンを処理する方法は?
-
[解決済み] ASP.NET MVCでenumからドロップダウンリストを作成するにはどうすればよいですか?
-
[解決済み] ASP.NET MVC - カスタムIIdentityまたはIPrincipalの設定
-
[解決済み] ASP.NET MVCでビューをコンパイルする
-
[解決済み] ASP.Net MVCのmodelStateからすべてのエラーを取得する方法は?
-
[解決済み】ASP.NET MVCビューで現在のアクションを返すにはどうすればいいですか?
-
[解決済み】ASP.NET MVC - コントローラーからApp_Dataフォルダーの絶対パスを検索する
-
[解決済み] [Solved] ASP.NET MVCでアクションの絶対URLを見つけるにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】画像のペイントにTextureBrushを使用する方法
-
[解決済み】ASP.NET MVCでWebアプリのベースURLを取得するにはどうすればよいですか?