1

私はasp.net Webフォームパラダイム(MVCのAPIControllerで実装されたAPI)にいます。IISExpress に次のバインディングを追加しました

http://sarfraz-pc:80
https://sarfraz-pc:443

この素晴らしい記事を使用して。http または https を使用してサイト全体にアクセスできます。ここで、一部のページを強制的に http で実行し、他のページを https で実行したいと考えています。Google は、コード プロジェクトの非常に古いソリューションやSecurity Switchと呼ばれる別のソリューションを含む、多くの結果を提供してくれました。

しかし、IIS 7.0 の URL 書き換えモジュールを使用してこれを実装することを真剣に検討しています。この目的で URL 書き換えを使用した人はいますか? URL書き換えについて詳しく分からないので聞きたいのですが、この方法をとるデメリットはありますか?Response.Redirectはいの場合は、別のアプローチ (私が言及したものを含む) を提案してください。ただし、アプリケーションのあちこちにコードを記述するだけではいけません。

4

2 に答える 2

4

このコードを global.asax ファイルに追加して、すべての要求を検査し、その場で変換します。

protected void Application_BeginRequest(Object sender, EventArgs e)
{
   if (HttpContext.Current.Request.IsSecureConnection.Equals(false) && HttpContext.Current.Request.IsLocal.Equals(false))
   {
    Response.Redirect("https://" + Request.ServerVariables["HTTP_HOST"]
+   HttpContext.Current.Request.RawUrl);
   }
}
于 2012-07-12T12:15:56.427 に答える
2

URL Rewrite は使用していませんが (私はこれについて少ししか経験がありません)、IIS のカスタム エラーを介して対処します。

  • 「/Error/403_4.aspx」などの URL に「403.4」(SSL が必要) のカスタム エラーを設定します。
  • ディレクトリを「SSL が必要」に設定します。

それから403_4.aspx...

Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
  Dim url As String = Request.Url.Query
  url = url.Replace("?403;", "")
  Dim port As String = String.Format(":{0}/", New Uri(url).Port)
  If url.IndexOf(port) <> -1 Then
    url = url.Replace(port, "/")
  End If
  url = url.Replace("http://", "https://")
  Response.Redirect(url, True)
End Sub

私はそれがあなたが求めているものではないことを知っていますが、コード内の複数の場所でリダイレクトを行うよりはましです.

于 2012-07-12T11:53:19.460 に答える