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

C# 如何使用ASP.NET为文件夹设置特定的404?,c#,asp.net,configuration,http-status-code-404,file-not-found,C#,Asp.net,Configuration,Http Status Code 404,File Not Found,这有点棘手,如果你们能给我一些建议,我会很高兴的以下是我想做的: 用户试图访问 myapp.com/data/123456.mp3 test.mp3不存在 系统将用户发送到 myapp.com/data/error.apsx?文件=123456.mp3 我需要这个来处理一个大系统应该提供mp3文件的方式 如果用户试图访问myapp.com/otherFolder/notHere.where,系统通常会返回标准404错误 我知道有很多方法可以在IIS中指定它,但是如果我可以通过编程或使用.ne

这有点棘手,如果你们能给我一些建议,我会很高兴的
以下是我想做的:

  • 用户试图访问 myapp.com/data/123456.mp3

  • test.mp3不存在

  • 系统将用户发送到 myapp.com/data/error.apsx?文件=123456.mp3

我需要这个来处理一个大系统应该提供mp3文件的方式

如果用户试图访问myapp.com/otherFolder/notHere.where,系统通常会返回标准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>

这似乎不起作用

自定义错误

在您的web.config中

<customErrors
       mode="RemoteOnly" 
       defaultRedirect="~/errors/GeneralError.aspx" 
/>

自定义错误

在您的web.config中

<customErrors
       mode="RemoteOnly" 
       defaultRedirect="~/errors/GeneralError.aspx" 
/>

可能您可以在要放置特定错误的文件夹中放置一个web.config文件,并在该文件中设置带有指示页面的customerror标记 也可以使用主web.config中的位置标记


但是我不确定这一点

也许你可以把一个web.config文件放在你想放一个特定错误的文件夹中,然后把customerror标签放在这个webconfig文件中,并显示页面 也可以使用主web.config中的位置标记


但是我不确定这一点

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

一旦你开始处理它,你就会想到几种方法来真正做到这一点

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


另一种方法是在您关心的文件夹级别创建一个web.config(可以嵌套),并在那里创建customerror部分。这更直接,但提供的控制要少得多。考虑到所有因素,我通常会支持该模块。

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

一旦你开始处理它,你就会想到几种方法来真正做到这一点

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


另一种方法是在您关心的文件夹级别创建一个web.config(可以嵌套),并在那里创建customerror部分。这更直接,但提供的控制要少得多。考虑到所有因素,我通常会支持该模块。

未找到所有文件。。generalerror.aspx是显示页面。此外,这将适用于整个应用程序,而不仅仅适用于文件夹。我希望能够指定它应该应用在哪个文件夹上。如果您没有被重定向,您可以将模式切换到“开”。RemoteOnly意味着您(在本地查看)将看到错误,但您的访问者(远程)将看到美好的快乐重定向。如果您想要更多的控制,您可以编写一个HTTPmodule来执行更多操作。找不到所有文件。。generalerror.aspx是显示页面。此外,这将适用于整个应用程序,而不仅仅适用于文件夹。我想能够指定它应该应用在哪个文件夹上如果你没有被重定向,你可以将模式切换到“开”。RemoteOnly意味着你(在本地查看)将看到错误,但是你的访问者(远程)将看到漂亮的快乐重定向。如果你想要更多的控制,你可以编写一个HTTPmodule来做更多的操作。我不需要控制,因为它100%确定此操作将只在这个文件夹中,并且只执行一个操作。所以我想我需要使用web配置。我编辑了我的问题qith我做了什么我不需要控制,因为它是100%肯定,这个行动将只在这个文件夹,将只做这一个行动。所以我想我需要使用web配置。我编辑了我的问题,按照我对被接受答案所做的:看评论。在被接受的答案之后:看评论