【问题标题】:DotNetNuke - First request returns 404DotNetNuke - 第一个请求返回 404
【发布时间】:2015-08-27 20:13:57
【问题描述】:

我在使用 DotNetNuke 平台时遇到了我一生都无法理解的问题……Google 和 SO 搜索没有任何帮助。

任何用户第一次尝试访问该站点时,无论他们请求的 URL 是什么,他们都会被重定向到下面的 URL,并给出如下所示的 404 错误。在最初的 404 之后,如果用户请求完全相同的 URL,那么该用户接下来的一切都会完美运行。他们被重定向到正确的登录页面,并且从那时起一切正常。

有谁知道为什么这只会在每个用户对网站的第一次请求时发生?我设置了开发、测试和生产环境,并且问题在所有环境中都是一致的。

请求的网址:http://intranet.domain.com/page

重定向网址:http://intranet.domain.com/Login.aspx?ReturnUrl=/DesktopModules/AuthenticationServices/ActiveDirectory/WindowsSignin.aspx

“/”应用程序中的服务器错误。

找不到资源。描述:HTTP 404。您正在寻找的资源(或其之一 依赖项)可能已被删除,名称已更改,或者是 暂时不可用。请查看以下 URL 并制作 确保拼写正确。

请求的 URL:/Login.aspx

  • IIS:v7
  • DNN:v7.02.01
  • 默认 DNN 身份验证已禁用,而 Active Directory 身份验证模块已启用。 (v5.0.6)

如果我可以提供任何其他配置信息,请告诉我。

【问题讨论】:

  • 可能因为 cookie 或会话,它第二次可以正常工作?
  • @alwaysVBNET 是的,我也是这么想的,但我不知道从哪里开始解决它,因为这一切都由 DNN 处理......
  • 为什么不安装源代码版本并调试
  • 事件查看器下还有记录吗?
  • 找到解决方案了吗?

标签: iis-7 dotnetnuke dotnetnuke-7


【解决方案1】:

这不是一个完整的解决方案,但它应该有助于阐明这种情况。我遇到了同样的问题。我会去该网站,它会将我重定向到

WebsiteLinkHere/DesktopModules/AuthenticationServices/ActiveDirectory/WindowsSignin.aspx

关于删除

DesktopModules/AuthenticationServices/ActiveDirectory/WindowsSignin.aspx

它会将我带到我的主页,从那里开始一切都按预期运行。我从 github 获取了这个模块的最新源代码并开始调试。我将错误追溯到 DNNUserController.ValidateUser() 函数。这似乎没有返回任何内容,这会导致页面出错。我决定暂时添加一个创可贴修复程序,这可能对其他人有所帮助。

在 WindowsSignin.aspx.vb 文件中,我添加了一个 try catch

objAuthentication.AuthenticationLogon()

在 catch 语句中,我添加了用于在成功验证后将您重定向到您来自的页面的代码。

Try
    objAuthentication.AuthenticationLogon()
Catch
    Dim querystringparams As String = "logon=" & DateTime.Now.Ticks.ToString()
    Dim strUrl As String = DotNetNuke.Common.NavigateURL(DotNetNuke.Entities.Portals.PortalSettings.Current.ActiveTab.TabID, String.Empty, querystringparams)
    If Not HttpContext.Current.Request.Cookies("DNNReturnTo") Is Nothing _
        Then
        querystringparams =
            HttpContext.Current.Request.Cookies("DNNReturnTo").Value
        'ACD-8445
        If querystringparams <> String.Empty Then querystringparams = querystringparams.ToLower
        If querystringparams <> String.Empty And querystringparams.IndexOf("windowssignin.aspx") < 0 Then _
            strUrl = querystringparams
    End If
    HttpContext.Current.Response.Redirect(strUrl, True)
End Try

这不是一个优雅的解决方案,但它确实避免了用户首次访问该站点时出现错误屏幕的问题。初次访问后,其他一切似乎都按预期工作。

【讨论】:

    【解决方案2】:

    两年多后我终于找到了答案……

    通过在 web.config 中注释掉“add name="Authentication" ...”行来解决问题。此自动登录功能已完全禁用。

    http://www.dnnsoftware.com/forums/threadid/459907/scope/posts/site-redirecting-to-desktopmodules-authenticationservices-activedirectory-windowssigninaspx

    【讨论】:

      猜你喜欢
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      相关资源
      最近更新 更多