我已经将ASP.NET 3.5应用程序部署到64位Windows 2003 R2服务器。
在web.config中我有以下
<customErrors mode="RemoteOnly" defaultRedirect="/404/"> <error statusCode="404" redirect="/404/"/> <error statusCode="500" redirect="/500/"/> </customErrors>
在IISpipe理器的网站属性中,我将404和500错误设置为Type =“URL”和与web.config中相同的URL。
我有一个通配符应用程序映射到.NET 2.0 aspnet_isapi.dllclosures“validation文件存在”。
如果我试图打一个假的.aspx文件,我成功地发送到404页面。 我相信这是因为有一个明确的.aspx映射到.NET DLL。
如果我试图访问一个虚假的目录,我只是收到一个纯文本回应说:
该系统找不到指定的文件。
看起来,这些对目录的请求不是通过.NETpipe道进行路由,这是我期望(和需要)发生的,因为通配符应用程序映射。
有任何想法吗?
为了testing你的逻辑,我实际上走完了整个过程。 我使用ETW跟踪IIS和ASP.NET以及Process Monitor来查看发生了什么事情。 这是我发现的:
IISGeneral: GENERAL_STATIC_FILE_HANDLER和失败, 0x80070002即FILENOTFOUND 0x80070002失败并发送通用The system cannot find the file specified. 错误。 希望这可以帮助。
对于IIS 5.0,开心的是:
属性>首页Directroy>高级configuration:select你感兴趣的文件扩展名,并选中“validation文件存在”checkbox。
如果你没有打开“validation文件”的通配符映射,它会发送请求到你的DLL。 如果您将它映射到的ASP.Net 2.0 DLL没有为您的应用程序使用web.config(您提到的是.net 3.5),那么它将返回一个通用的错误。 如果启用“validation文件存在”选项,IIS将会看到该文件夹不存在,并使用其内部错误设置(您所说的与web.config中的内容相同)。 也许尝试打开这个选项,看看是否有助于你的情况。