[英]How to have a specific 404 for a folder using ASP.NET?
这有点棘手,如果你们能给我一些指针,我会很高兴的。
这是我想要做的:
用户尝试访问myapp.com/data/123456.mp3
test.mp3不存在
系统将用户发送到myapp.com/data/error.apsx?file=123456.mp3
我需要这个来处理大型系统应该提供mp3文件的方式。
如果用户尝试访问myapp.com/otherFolder/notHere.whatever,则系统会正常返回标准404错误。
我知道在IIS中有一些方法可以指定,但是如果我能以编程方式执行某些操作或者只是使用我的.net项目,我会喜欢它。
编辑:
我在myapp.com/data/中创建了一个web.config文件
<?xml version="1.0"?>
<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="/data/mp3/full/serveMp3.aspx"/>
</system.web>
</configuration>
这似乎不起作用。
自定义错误http://aspnetresources.com/articles/CustomErrorPages.aspx
在你的web.config中。
<customErrors
mode="RemoteOnly"
defaultRedirect="~/errors/GeneralError.aspx"
/>
您要做的第一件事是确保ASP.NET能够处理这些文件请求,因为默认情况下.mp3不是ASP.NET扩展,这只是由IIS处理。
一旦你正在处理它,实际上这样做的几种方法。
第一个是创建一个HttpModule,它监视OnUnhandledException事件。 由于ASP.NET将404(以及所有HTTP错误)抛出为HttpException类型异常,因此模块将为您提供捕获,解析请求和重定向到您自己的目的的位置。
另一种方法是在你关心的文件夹级别创建一个web.config(这些可以嵌套记住)并在那里创建customerror部分。 这更直接,但提供的控制要少得多。 考虑到所有事情,我一般都赞成这个模块。
可能你可以把web.config放在你想要输入特定错误的文件夹中,并在webconfig中输入带有指示页面的customerror标记,或者你可以使用主web.config中的location标记。
但我不确定这一点
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.