2010-06-04 4 views
24

Я работаю над некоторой обработкой ошибок в моем приложении MVC, и я хотел бы изменить asperrorpath на то, что не дает того факта, что я использую .NET. ... что-то вроде pathОбработка ошибок ASP.NET MVC - удаление aspxerrorpath

Может ли кто-нибудь дать мне какое-то направление, как это изменить?

+0

Hello rockinthesixstring. Вы нашли ответ на это? Я тоже хотел бы сделать это! Кто угодно? Кто угодно? +1 – Funka

+0

Извините, для меня пока нет ответа. –

+0

Извините, вы обманываете себя, я думаю, что нетрудно узнать, работает ли сайт asp.net. asp.net и mvc имеют очень сильные контрольные признаки, которые не требуют много усилий, чтобы понять, и это встроено в способ обработки запросов, поэтому нет никакой конфигурации или других изменений, которые вы можете сделать, что скроет ее. –

ответ

-1

Есть много способов решить вашу проблему. Это зависит от того, что вы хотите.

  1. Вы можете редактировать раздел в вашем web.config и написать ссылку по умолчанию для перенаправления на ошибку, а также задать различные ссылки для различных ошибок, как <error statusCode="403" redirect="NoAccess.htm" />
  2. Вы можете использовать атрибут HandleError для контроллера/действий. Вы можете прочитать об этом here.
2

мой wprk вокруг использует

route.MapRoute("NotFound", "{*url}", new {controller = "Home", action = "NotFound"}) 

В нижней части большинства, что у меня есть NotFound действие в HomeController. Он просто поймает все остальные URL-адреса.

+0

nope. Я не забочусь о URL-адресе (я уже об этом позаботился) ... но запрос для returnUrl в настоящее время «? Asperrorpath = http ...», в котором все знают, что я использую .net (не говорю, что это плохая вещь). Я просто хотел бы изменить элемент на '? Go = http ...'. Что я уже сделал. Я отправлю свое решение позже в тот же день. –

+0

Да, я нашел так много трюков, это то, что я считаю лучшим. Если вы используете этот способ, вам нужно включить 'On' (или' RemoteOnly') 'customError', но не указывать перенаправление 404 и т. Д. В файле web.config,' '{* url}" 'будет его улавливать. Я использую MVC 3. Не уверен в предыдущей версии. Я никогда не получу точку '? Asperrorpath =' – CallMeLaNN

8

Добавить redirectMode="ResponseRewrite" в раздел особых условий. Это сработало для меня.

+0

на то, что я искал. – Stuart

+10

Предупреждение. Вы можете использовать ResponseRewrite только в том случае, если вы перенаправляете файл на сервер и не используете маршруты MVC на странице с ошибкой: http ://переполнение стека.com/a/3770265/188740 –

-1

Поставляя строку пользовательского запроса, ваш aspxerrorpath не будет отображаться.

Проверить оригинальный ответ по этой ссылке: how to prevent “aspxerrorpath”

+0

Я * угадал * так, но скажу, что вы хотите перенаправить на домашнюю страницу вашего сайта на 404 - если вы укажете 'redirect =" ~ /? "' в web.config, ваш URL будет похожи на 'http: // localhost: 51437 /?' - что-то вроде уродливого и может не соответствовать требованиям вашего проекта. – alex

-1

Просто добавьте фиктивную строку запроса ваших .htm страниц, как показано ниже.

<customErrors mode="On" defaultRedirect="errorpage.htm?error=1" > 
     <error statusCode="404" redirect="filenotfound.htm?error=1" /> 
</customErrors> 

Проверьте с стелькой, строка asperrorpath запрос не появляется больше и ссылающиеся из errorpage.htm является абсолютно чистым.

+0

Что делать, если вы перенаправляетесь на страницу MVC '.cshtml' вместо обычной HTML-страницы? По умолчанию среда MVC использует файлы '.cshtml'. Кроме того, что, если вы настроили маршрутизацию на основе атрибутов? – alex

+0

Это решение подходит для ошибок, которые вы не можете или не обрабатываете с помощью кода. Это когда появляется строка запроса asperrorpath. Основная цель заключается в том, чтобы не позволить уязвимостям обнаруживать используемую вами базовую технологию. Вы всегда можете перенаправить своего пользователя на действие контроллера, которое возвращает представление об ошибке, где asperrorpath не отображается, и вы полностью безопасны. –

Смежные вопросы