ASP.NET Core RazorPagesでWEBアプリケーションを作成しています。
開発時に仮想ディレクトリを意識しないで作成し、各画面の遷移を以下のようなリダイレクトコードで行なっていました。
C#
1 public async Task<IActionResult> OnPost() 2 { 3 var isError = false; 4 /* なにがしかの処理 */ 5 6 if(isError){ 7 return Redirect("/Error"); 8 } else { 9 return Redirect("/Success"); 10 } 11 }
その後方針が変わり、Azureにデプロイする際に仮想ディレクトリを切ってその配下に配置することになりました。つまり元々は
http://mysampleapp-develop.azurewebsites.net/
でアクセスしていたものが、
http://mysampleapp-develop.azurewebsites.net/MyApp/
でアクセスする形になりました。
上記の設定によりアプリケーションルートが/
から/MyApp/
へと変わってしまったため、Redirectが想定の動きをしなくなってしまっています。
- 想定した動き:
/MyApp/SamplePage
から/MyApp/Error
にリダイレクトされる - 実際の動き :
/MyApp/SamplePage
から/Error
にリダイレクトされる
これを解消するシンプルな方法はありませんか?
なおreturn Redirect("~/Error");
とすることで意図した動きになることは確認していますが、修正箇所が多いのと、cshtml側で@(Url.Content("/images/loading.gif"))
こんな書き方している部分もあるので、アプリケーションの設定自体に仮想パスRootを指定して仮想ディレクトリを意識しないで済む方法はないかと思っている次第です。
- Visual Studio Enterprizer 2017 version 15.5.6
- .NET Framework 4.7.02556
- .NET Core 2.0
追記
Microsoft.AspNetCore.Rewrite
ミドルウェアも試してみましたが、上手く動かすことが出来ませんでした。
C#
1var rewriteOptions = new RewriteOptions() 2 .AddRedirectToHttps() 3 .AddRewrite(@"^((?!/MyApp).*)$", @"/MyApp$1", true);
こんな設定で記述してみたものの、Rewriteされる瞬間の生URLと書き換えURLがデバッグで捕捉できなかったため、そもそも動いているのか、想定通りのURLが渡ってきているのかさえ覗けなかったので諦めました。(中身が見れれば正規表現組むのは容易いんですが…)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/14 05:57
退会済みユーザー
2018/02/14 08:26