2009-08-07 29 views

回答

3

这里是个实用方法获取登录网址:

C#

 /// <summary> 
     /// Gets the login URL for the given portal from the current <paramref name="request"/>. 
     /// </summary> 
     /// <param name="portalSettings">The portal settings.</param> 
     /// <param name="request">The request.</param> 
     /// <returns>The URL for the login page</returns> 
     /// <exception cref="ArgumentNullException">if <paramref name="portalSettings"/> or <paramref name="request"/> is null.</exception> 
     public static string GetLoginUrl(PortalSettings portalSettings, HttpRequest request) 
     { 
      if (portalSettings != null && request != null) 
      { 
       int tabId = portalSettings.ActiveTab.TabID; 
       string controlKey = "Login"; 
       string returnUrl = request.RawUrl; 
       if (returnUrl.IndexOf("?returnurl=", StringComparison.OrdinalIgnoreCase) > -1) 
       { 
        returnUrl = returnUrl.Substring(0, returnUrl.IndexOf("?returnurl=", StringComparison.OrdinalIgnoreCase)); 
       } 

       returnUrl = HttpUtility.UrlEncode(returnUrl); 

       if (!Null.IsNull(portalSettings.LoginTabId) && string.IsNullOrEmpty(request.QueryString["override"])) 
       { 
        // user defined tab 
        controlKey = string.Empty; 
        tabId = portalSettings.LoginTabId; 
       } 
       else if (!Null.IsNull(portalSettings.HomeTabId)) 
       { 
        // portal tab 
        tabId = portalSettings.HomeTabId; 
       } 

       // else current tab 
       return Globals.NavigateURL(tabId, controlKey, new string[] { "returnUrl=" + returnUrl }); 
      } 

      throw new ArgumentNullException(portalSettings == null ? "portalSettings" : "request"); 
     } 

VB.NET

''' <summary> 
''' Gets the login URL for the given portal from the current <paramref name="request"/>. 
''' </summary> 
''' <param name="portalSettings">The portal settings.</param> 
''' <param name="request">The request.</param> 
''' <returns>The URL for the login page</returns> 
''' <exception cref="ArgumentNullException">if <paramref name="portalSettings"/> or <paramref name="request"/> is null.</exception> 
Public Shared Function GetLoginUrl(portalSettings As PortalSettings, request As HttpRequest) As String 
    If portalSettings <> Nothing AndAlso request <> Nothing Then 
     Dim tabId As Integer = portalSettings.ActiveTab.TabID 
     Dim controlKey As String = "Login" 
     Dim returnUrl As String = request.RawUrl 
     If returnUrl.IndexOf("?returnurl=", StringComparison.OrdinalIgnoreCase) > -1 Then 
      returnUrl = returnUrl.Substring(0, returnUrl.IndexOf("?returnurl=", StringComparison.OrdinalIgnoreCase)) 
     End If 

     returnUrl = HttpUtility.UrlEncode(returnUrl) 

     If Not Null.IsNull(portalSettings.LoginTabId) AndAlso String.IsNullOrEmpty(request.QueryString("override")) Then 
      ' user defined tab 
      controlKey = String.Empty 
      tabId = portalSettings.LoginTabId 
     ElseIf Not Null.IsNull(portalSettings.HomeTabId) Then 
      ' portal tab 
      tabId = portalSettings.HomeTabId 
     End If 

     ' else current tab 
     Return Globals.NavigateURL(tabId, controlKey, New String() {"returnUrl=" + returnUrl}) 
    End If 

    Throw New ArgumentNullException(If(portalSettings = Nothing, "portalSettings", "request")) 
End Function 
0

您可以在CTL =登录查询字符串传递去默认的DNN登录页面,即使默认的网址是什么?已被修改..

string loginURL = string.Format("{0}://{1}/Default.aspx?ctl=login", 
    Request.Url.Scheme, Request.Url.Host); 
Response.Redirect(loginURL); 
3

Globals.LoginURL

public static string LoginURL(
    string returnURL, 
    bool override 
) 
+0

如果returnURL有查询字符串参数(基本上包含?),那么该方法返回当前页面:(。似乎可以在DNN 6和7中重现。 – Valentin 2016-02-12 09:55:57

+0

其实登录地址如果没问题。具有查询字符串参数时,登录后的重定向不起作用。 – Valentin 2016-02-12 13:52:02

相关问题