2

ASP.Net Webサイトに、SSLを有効にする必要がある単一のディレクトリがあります。他のすべてのディレクトリでは、SSLを有効にしたくありません。

IISを使用して、SSLを要求するフォルダーの[セキュリティで保護されたチャネル(SS)を要求する]チェックボックスと128ビットの暗号化チェックボックスをオンにしました。

ここで、ユーザーが「http://」と入力すると、安全なディレクトリとして、自動的に「https://」にリダイレクトしたいと思います。私は2つのアプローチを試しましたが、どちらも失敗しました。

アプローチ1:403; 4のディレクトリのIISカスタムエラーページを、「/ Intranet2/SSLRedirect.aspx」を指すURLに変更します。SSLRedirectは、それらを正しいサイトにポイントします。これを行うと、URLがWebサイトの一部であり、Webサイト全体に1つのアプリプールしかありません(DefaultAppPoolではありません)が、「指定されたリクエストは現在のアプリケーションプールから実行できません」というエラーが表示されます。

アプローチ2:ディレクトリにweb.configを追加して、403エラーコードを上書きします。このように見えます:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
        <customErrors defaultRedirect="../Default.aspx" mode="On">
            <error statusCode="403" redirect="../SSLRedirect.aspx" />
        </customErrors>
    </system.web>
</configuration>

ただし、この変更を行うと、IISで定義されているデフォルトの403.4が常に取得されます。

助言がありますか?

4

1 に答える 1

0

アプローチ1:Webサイト全体に1つのアプリプールしか構成されていないと誤解しているようです。おそらく、デフォルトサイト用に1つ、作業している仮想ディレクトリ用にもう1つあります。あなたの選択は次のいずれかです:

a)サイト全体でアプリプールが1つだけになるように、再構成します。

b)エラーを生成しているページと同じアプリプールにあるディレクトリからエラーページを提供します

c)レジストリを微調整して、このエラーをシャットオフします。HKLM\ SYSTEM \ CurrentControlSet \ Services \ W3SVC\ParametersでIgnoreAppPoolForCustomErrorsを1に設定します。http://blogs.msdn.com/b/rakkimk/archive/2006/09/01/735684.aspxを参照してください

アプローチ2:web.configのカスタムエラーは、asp.netがエラーを処理している場合にのみ使用されます。sslチェックが失敗したため、IISはここでasp.net処理エンジンを使用していないと思います。したがって、これはここでは機能しません。

于 2011-02-18T18:58:25.420 に答える