繁体   English   中英

如何使用ASP.NET为文件夹设置特定的404?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM