DotNetNuke - 第一个请求 returns 404

DotNetNuke - First request returns 404

我遇到了 DotNetNuke 平台的问题,我一生都无法理解...Google SO 搜索没有帮助。

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

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

请求URL:http://intranet.domain.com/page

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

Server Error in '/' Application.

The resource cannot be found. Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.

Requested URL: /Login.aspx

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

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

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

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

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

The problem was solved by commenting out "add name="Authentication" ..." line in web.config. This disabled autologin feature completely.

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