Вопрос

Это немного сложно, и я был бы рад, если бы вы, ребята, могли дать мне несколько советов по этому поводу.
Вот что я хочу сделать:

  • Пользователь пытается получить доступ к myapp.com/data/123456.mp3

  • test.mp3 не существует

  • Система отправляет пользователя на myapp.com/data/error.apsx?file=123456.mp3

Мне это нужно, чтобы справиться с тем, как большая система должна обслуживать mp3-файлы.

Если пользователь пытается получить доступ к myapp.com/otherFolder/notHere.whatever, система обычно возвращает стандартную ошибку 404.

Я знаю, что есть способы указать это в IIS, но мне бы хотелось, чтобы я мог что-то сделать программно или просто в своем .net-проекте.

редактировать:

Я создал файл web.config в myapp.com/data/.

<?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 Indide в папку, которую вы хотите поставить определенную ошибку, и поместить в этот веб -конфиг тег CustomError с указанной страницей, или вы можете использовать тег местоположения внутри основного web.config

но я не уверен в этом

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top