C# 4.0 如何在DotNetNuke模块中加入404
我想从我的模块中抛出一个404 file not found异常,但每个异常都被DNN捕获,并且不显示我的404.aspx页面(仅显示DNN中的错误页面) 在我的web.config中,我添加了:C# 4.0 如何在DotNetNuke模块中加入404,c#-4.0,dotnetnuke,dotnetnuke-module,dotnetnuke-6,C# 4.0,Dotnetnuke,Dotnetnuke Module,Dotnetnuke 6,我想从我的模块中抛出一个404 file not found异常,但每个异常都被DNN捕获,并且不显示我的404.aspx页面(仅显示DNN中的错误页面) 在我的web.config中,我添加了: <httpErrors errorMode="Custom" defaultResponseMode="File"> <remove statusCode="404" /> <error statusCode="404" prefixLanguageFilePat
<httpErrors errorMode="Custom" defaultResponseMode="File">
<remove statusCode="404" />
<error statusCode="404" prefixLanguageFilePath="" path="/404.aspx" responseMode="ExecuteURL" />
</httpErrors>
只要这样做:
Response.StatusCode = 404;
Response.End();
也许你需要先弄清楚答案
Response.Clear();
Response.StatusCode = 404;
Response.End();
DNN的简单解决方案
TabInfo errorPage404 = new TabController().GetTabByName("404 Error Page", this.PortalId);
Response.Redirect(DotNetNuke.Common.Globals.NavigateURL(errorPage404.TabID));
我很难理解为什么你想让模块抛出404?该模块是否专门设计为页面上唯一的内容?是的。我正在为我的网站开发一个模块,当一个用户做了一些奇怪的事情时,我只想显示一个404(这是我的404页面)。试过了,没用。DNN显然覆盖了这一点,但不做任何处理。这段代码确实有效,但它取决于它发生的上下文。在页面的正常get请求中,这将导致404,但是如果发生这种情况(比如在ajax回发中的按钮单击事件中),404仍将从服务器返回,但是updatepanel将有效地忽略404,并且看起来用户好像什么都没发生过。我已经尝试了这段代码。我的上下文是在页面加载中检查一些条件。如果他们不匹配,我想投404。谢谢。这是目前为止最好的答案。
Response.Clear();
Response.StatusCode = 404;
Response.End();
TabInfo errorPage404 = new TabController().GetTabByName("404 Error Page", this.PortalId);
Response.Redirect(DotNetNuke.Common.Globals.NavigateURL(errorPage404.TabID));