2009-07-30 17 views
1

私はASP.NET MVCサイトの一部でhttps/sslを強制的に実行します。ここでActionFilterなどの素晴らしいソースが見つかりました:http://blog.tylergarlick.com/index.php/2009/07/mvc-redirect-to-http-and-https/HttpContext.Request.Urlがアドレスバーの内容と一致しないのはなぜですか?

私はActionFilterを有効にするたびに、私はリダイレクトループに終わります。問題は、アドレスバーにhttps://www.mysite.com/と入力すると、request.urlは常にhttp://www.mysite.com/となります。

アクションフィルタのコードは以下の通りですが、私が知っている限り、標準の設定を超えて、URLの書き換え、リダイレクト、カスタムルーティングやURLの変更は行っていません。これが起こっている可能性のある一般的な/珍しい理由や回避策や修正がありますか?このサイトは現在NetworkSolutionsでホストされています - IIS設定に関連する可能性はありますか?どんな援助も高く評価されるだろう。

public class RedirectToHttps : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     // Helpers just so I don’t have to type so much 
     var request = filterContext.HttpContext.Request; 
     var response = filterContext.HttpContext.Response; 

     // Make sure we’re in https or local 
     if (!request.IsSecureConnection && !request.IsLocal) 
     { 
      string redirectUrl = request.Url.ToString().Replace("http:", "https:"); 
      response.Redirect(redirectUrl); 
     } 

     base.OnActionExecuting(filterContext); 
    } 
} 
+0

また、MVC先物のRequireSSL属性を使用して同じリダイレクトループが発生しました –

答えて

3

明示的なURL書き換えを実行していなくても、ASP.NET MVCエンジンによって行われます。 HttpContext.Request.RawUrl

+0

私の質問に答える時間をとってくれてありがとうございます。 RawUrlは私に相対パス、例えば/default.aspxを与えているようです。これは正常ですか? –

+0

私は元のURLが含まれていると思っていましたが、ドキュメントによると: "生のURLは、ドメイン情報に続くURLの一部として定義されています"。ごめんなさい... –

関連する問題