1

这有点棘手,如果你们能给我一些关于这个的建议,我会很高兴。
这是我想做的事情:

  • 用户尝试访问 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>

这似乎不起作用。

4

3 回答 3

2

自定义错误 http://aspnetresources.com/articles/CustomErrorPages.aspx

在您的 web.config 中。

<customErrors
       mode="RemoteOnly" 
       defaultRedirect="~/errors/GeneralError.aspx" 
/>
于 2009-09-11T19:05:10.690 回答
2

您要做的第一件事是确保 ASP.NET 能够处理这些文件请求,因为默认情况下 .mp3 不是 ASP.NET 扩展名,而这只会由 IIS 处理。

一旦你处理它,就有几种方法可以真正做到这一点。

首先是创建一个监视 OnUnhandledException 事件的 HttpModule。由于 ASP.NET 将 404(以及所有 HTTP 错误)作为 HttpException 类型异常抛出,因此该模块将为您提供一个位置来捕获、解析请求并重定向到您自己的目的。

另一种方法是在您关心的文件夹级别创建一个 web.config(这些可以嵌套记住)并在那里创建 customerror 部分。这更简单,但提供的控制要少得多。考虑到所有事情,我一般都会支持该模块。

于 2009-09-11T19:11:10.190 回答
0

可能您可以将 web.config 放在要放置特定错误的文件夹中,并将带有指示页面的 customerror 标签放入该 webconfig 中,或者您可以使用主 web.config 中的 location 标签

但我不确定

于 2009-09-11T19:06:48.763 回答