簡體   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