大家也许看了我之前的一篇文章讲述如何定制DNN登陆页面的文章:
如何定制登陆页面, 然后尝试新建一个页面测试一下, 最后也许误删了该页面的Account Login模块(登陆模块)而导致了你的站点无法登陆, 这时我们怎么回滚这些设置呢? 遗憾的是, DNN并没有对此类问题提供什么好的操作界面或解决方案, 最后还得我们这些DNN Fans(Developer)来挖掘问题的出路和解决方案. 我想大家第一想到方案应该就是直接暴力修改数据库了, 对, 我想在此能分享的也就是暴力解决方案, 其中的原理很简单, 因为DNN默认登陆Url一般可通过这样得到
http://yourwebsite/default.aspx?ctl=login (也是原始url, 没有任何Url Rewrite, 如果你深入研究会发现这一页面或是首页或是当前页面), 如果你按照我前边文章定制了登陆页面的话, 那无非就是Portal 的属性LoginTabId 修改为新的页面的TabID( 比如 100, 231), 这时当你点击登陆链接时DNN将根据站点设置跳转到对应的页面, 仔细研读下列代码可知其中奥秘:
- If PortalSettings.LoginTabId <> -1 And Request.QueryString("override") Is Nothing Then
-
- Response.Redirect(NavigateURL(PortalSettings.LoginTabId, "", "returnurl=" & ReturnUrl), True)
- Else
-
- If PortalSettings.HomeTabId <> -1 Then
- Response.Redirect(NavigateURL(PortalSettings.HomeTabId, "Login", "returnurl=" & ReturnUrl), True)
- Else
- Response.Redirect(NavigateURL(PortalSettings.ActiveTab.TabID, "Login", "returnurl=" & ReturnUrl), True)
- End If
- End If
- End If
好, 现在你应该也知道如何解决了吧, 有两种方式(都不是独创的, 直接Copy过来, 本着分享的原则, 详细请看相关链接):
1) 如果你有数据库权限, 那就执行这一SQL语句:
- Update Portals Set LoginTabId=NULL Where PortalId=xx /* xx代表你站点对应的PortalID, 一般是0 */
最后记得清一下缓存(重启IIS或"修改"Web.config或其他类似方式)