我在.net中编写了一个简单的HttpModule,用于针对非.net文件的数据库对用户进行身份验证。
在IIS 6中,我将.htm和.pdf扩展名映射为C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
执行,一切运行良好。
现在我不想对Classic asp页面做同样的事情但是.asp扩展名已经映射到C:\WINDOWS\system32\inetsrv\asp.dll
并且将它映射到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
是行不通的,因为没有构建提供程序.net中的经典ASP。
以下是我的web.config文件的样子:
<system.web>
<authorization>
<deny users "?" />
</authorization>
<compilation>
<buildProviders>
<add extension=".asp" type="System.Web.Compilation.PageBuildProvider" />
<add extension=".htm" type="System.Web.Compilation.PageBuildProvider" />
<add extension=".pdf" type="System.Web.Compilation.IgnoreFileBuildProvider" />
</buildProviders>
</compilation>
<httpHandlers>
<add path="*.asp" verb="*" type="System.Web.UI.PageHandlerFactory" validate="false"/>
<add path="*.htm" verb="*" type="System.Web.UI.PageHandlerFactory" validate="false"/>
<add path="*.pdf" verb="*" type="System.Web.StaticFileHandler" validate="false"/>
</httpHandlers>
<httpModules>
<add name="MyAuthenticationModule" type="Authentication.MyAuthenticationModule, Authentication"/>
</httpModules>
</system.web>
有解决方案吗?
答案 0 :(得分:0)
ASP.Net大部分将不正确解释经典ASP文件。如果您有一个非常简单的经典ASP页面,可能只有一些非常简单的服务器表达式,例如<%=Date() %>
或两个,您可能会非常幸运并发现代码仍然有效......但我不会指望它。
您可以将经典ASP页面存放在与ASP.Net页面相同的IIS网站中,但您仍需要配置这些页面,以便经典的ASP解释器负责它们。您还可以将身份验证配置为在IIS级别进行,或者将ASP.Net和ASP classic配置为共享身份验证令牌/ cookie,以便用户登录到ASP.Net站点一次,并且经典ASP页面仍受此保护单一认证事件。但是,设置和正常工作是不一个简单的操作。