我的ASP.Net网站上有一个目录,我需要启用SSL。对于所有其他目录,我不希望启用SSL。
使用IIS,我已经检查了我想要SSL的文件夹的Require secure channel(SS)和128-bit encryption复选框。
现在,当用户输入“http://”时,对于我的安全目录,我想自动将它们重定向到“https://”。我尝试了两种方法,但都失败了。
方法1:将403; 4目录的IIS自定义错误页面更改为指向“/Intranet2/SSLRedirect.aspx”的URL。 SSLRedirect会将它们指向正确的站点。当我这样做时,我得到“指定的请求无法从当前的应用程序池执行”错误,即使网址是网站的一部分,我只有一个应用程序池用于整个网站(而不是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。
有什么建议吗?
答案 0 :(得分:0)
方法1:您认为您只为整个网站配置了一个应用程序池,这似乎是错误的。您可能有一个用于默认站点,另一个用于您正在使用的虚拟目录。您的选择是:
a)重新配置它,以便您确实只有一个整个站点的应用程序池,
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处理错误时使用。我相信IIS不会在这里使用asp.net处理引擎,因为ssl检查失败了。所以这根本不适用。