Как закинуть 404 в модуль DotNetNuke

Я хочу выбросить из моего модуля исключение 404 file not found, но каждое исключение перехватывается DNN и не показывает мне мою страницу 404.aspx (только страницу с ошибкой из DNN).

В моем web.config я добавил:

<httpErrors errorMode="Custom" defaultResponseMode="File">
  <remove statusCode="404" />
  <error statusCode="404" prefixLanguageFilePath="" path="/404.aspx" responseMode="ExecuteURL" />
</httpErrors>

&

<customErrors mode="On">
  <error statusCode="404" redirect="~/404.aspx" />
</customErrors>

Что отлично работает при открытии несуществующей страницы. Но попытка проделать то же самое с моим модулем не дает такого же результата ...

Я безуспешно пробовал следующее:

throw new HttpException(404, "Not Found");

person jerone    schedule 13.03.2012    source источник
comment
Мне сложно понять, почему вы хотите, чтобы модуль выдавал ошибку 404? Модуль специально разработан, чтобы быть единственным на странице?   -  person Chris Hammond    schedule 13.03.2012
comment
Да, это. Я разрабатываю модуль только для своего сайта, и когда пользователь делает что-то странное, я просто хочу, чтобы отображался 404 (это моя страница 404).   -  person jerone    schedule 13.03.2012


Ответы (3)


просто сделай это:

Response.StatusCode = 404;
Response.End(); 
person erikvb    schedule 13.03.2012
comment
Пробовал, не сработало. DNN явно игнорирует это и ничего не делает с этим. - person jerone; 13.03.2012

Простое решение для DNN

TabInfo errorPage404 = new TabController().GetTabByName("404 Error Page", this.PortalId);
Response.Redirect(DotNetNuke.Common.Globals.NavigateURL(errorPage404.TabID));
person Ali Soltani    schedule 17.09.2018
comment
Спасибо. На данный момент это лучший ответ. - person Constantine Ketskalo; 26.08.2020

Может, сначала нужно четкий ответ?

Response.Clear();
Response.StatusCode = 404;
Response.End(); 
person Trapias    schedule 13.03.2012
comment
Этот код действительно работает, но это зависит от контекста, когда это происходит. В обычном запросе на получение страницы это приведет к 404, однако, если это произойдет, скажем, внутри события нажатия кнопки в обратной передаче ajax, 404 все равно будет возвращено с сервера, но панель обновлений будет эффективно игнорировать 404, и это будет выглядеть так, как будто с пользователем ничего не произошло. - person ScottS; 14.03.2012
comment
Я пробовал этот код. В моем контексте я проверяю загрузку страницы на наличие некоторых условий. Если они не совпадают, я хочу бросить 404. - person jerone; 14.03.2012