2009-12-16 110 views
2

我有模塊,使一個Response.Redirect不同的頁面,如果一些條件不滿足。但是,我注意到EventLog中有很多與此有關的錯誤。我正確的說,由於DNN所使用的頁面上的模塊的動態加載,I 不能在 不應該在Init方法中做一個重定向嗎?DotNetNuke重定向在Page_Init方法異常

這裏是例外:

System.Threading.ThreadAbortException:線程已被中止。 System.Web.HttpResponse.End()處的System.Threading.Thread.Abort(Object stateInfo)處的System.Web.HttpResponse.Redirect(String url,Boolean endResponse)處的System.Threading.Thread.AbortInternal()。 C:\ Projects \ ASP_NET \ XXXX \ XXXX.Controllers \ BaseNavigationController.cs中的Controllers.BaseNavigationController.NavigateTo(String url,NameValueCollection qsParams,Boolean endResponse):XXXX.Controllers.BaseNavigationController.NavigateTo(String url) \ Projects \ ASP_NET \ XXXX \ XXXX.Controllers \ BaseNavigationController.cs:第45行XXXX.UI.DesktopModules.QuoteStepModuleBase.CheckIfOnValidStep()在C:\ Projects \ ASP_NET \ XXXX \ WebRoot \ XXXX.UI \ BaseClasses \ QuoteStepModuleBase.cs :C:\ Projects \ ASP_NET \ XXXX \ WebRoot \ XXXX.UI \ BaseClasses \ QuoteStepModuleBase.cs中XXXX.UI.DesktopModules.QuoteStepModuleBase.QuoteStepModuleBase_Init(對象發件人,EventArgs e)行64:System.Web.UI行31 .Control.OnInit(EventArgs e)在System.Web.UI.UserControl.OnInit(EventArgs e)在System.Web.UI.Cont在System.Web.UI.Control.AddedControl(Control控件,Int32索引)上的Rol.InitRecursive(Control namingContainer)在System.Web.UI.ControlCollection.Add(控制子)DotNetNuke.UI.Modules.ModuleHost.InjectModuleContent(Control內容)在C:\ Projects \ 3rdParty \ DotNetNuke_Community_05.01.01_Source \ Library \ UI \ Modules \ ModuleHost.vb:C:\ Projects \ 3rdParty \ DotNetNuke_Community_05.01.01中DotNetNuke.UI.Modules.ModuleHost.CreateChildControls()178行_Source \ Library \ UI \ Modules \ ModuleHost.vb:第428行System.Web.UI.Control.EnsureChildControls()在DotNetNuke.UI.Modules.ModuleHost.get_ModuleControl()在C:\ Projects \ 3rdParty \ DotNetNuke_Community_05.01.01_Source \ Library \ UI \ Modules \ ModuleHost.vb:C:\ Projects \ 3rdParty \ DotNetNuke_Community_05.01.01_Source \ Library \ UI \ Containers \ Container.vb中的DotNetNuke.UI.Containers.Container.get_ModuleControl()中的第95行:第123行在C:\ Projects \ 3rdParty \ DotNetNuke_Community_05.01.01_Source \ Library \ UI \ Cont DotNetNuke.UI.Containers.Container.ProcessModule()中ainers \ Container.vb:C:\ Projects \ 3rdParty \ DotNetNuke_Community_05.01.01_Source \ Library \ UI \ Containers \ Container.vb中的DotNetNuke.UI.Containers.Container.SetModuleConfiguration(ModuleInfo配置)中的第364行:DotNetNuke的第548行。 UI.Skins.Pane.InjectModule(ModuleInfo objModule)在C:\項目\的3rdParty \ DotNetNuke_Community_05.01.01_Source \庫\ UI \皮膚\ Pane.vb:線402

回答

3

Response.Redirect拋出一個ThreadAbortException停止執行的頁面。這不是問題,可以安全地忽略。您可以查看您正在記錄異常的位置,並分別記錄ThreadAbortException,以避免記錄。

您也可以通過false作爲第二個參數來Response.Redirect,這將結束的響應,而不是拋出異常,在渲染服務器上的網頁的費用時,它不會被渲染到客戶。

+0

謝謝,我意識到Response.Redirect引發異常的事實。我對DNN如何動態加載模塊以及它如何適應這種情況更感興趣。例如,DNN中的常見做法是不在init事件中重定向? – cfbarbero 2009-12-16 21:21:36

+1

我從來沒有聽說過DNN的任何指導,以避免在Init事件中重定向。我不相信DNN的動態加載模塊對重定向有任何影響。 – bdukes 2009-12-16 21:40:45

+1

我們在各種地方重定向,並且我們在response.redirect中使用了FALSE作爲第二個參數 - 我們想知道同樣的事情,但是找不到任何說不這樣做的事情,或者這是一種不好的做法。我的2便士! – braindice 2009-12-16 21:45:17