These are stock ISA rules (HTTP Filter) on a Small Business Server 2003 Premium R2. So anyone with the same environment will run into this problem. The HTTP filter can either be on or off with no other options. I'd rather have it on.
This should be an easy fix.
Looking at the source in Login.ascx.vb, I find:
Private Sub cmdPassword_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles cmdPassword.Click
Dim ReturnUrl As String = NavigateURL()
If Not String.IsNullOrEmpty(Request.QueryString("returnurl")) Then
ReturnUrl = Request.QueryString("returnurl")
End If
ReturnUrl = HttpUtility.UrlEncode(Request.RawUrl)
Response.Redirect(NavigateURL("SendPassword", "returnurl=" + ReturnUrl), True)
End Sub
In the above code block, the first two statements assigning a value to ReturnUrl are useless as ReturnUrl will be overwritten in the following step. That looks like either a coding error (using RawUrl) or bad housekeeping by not deleting useless code. Either way, it needs to be looked at.
Private Sub cmdRegister_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmdRegister.Click
If PortalSettings.UserRegistration <> PortalRegistrationType.NoRegistration Then
Dim ReturnUrl As String = NavigateURL()
If Not String.IsNullOrEmpty(Request.QueryString("returnurl")) Then
ReturnUrl = Request.QueryString("returnurl")
End If
ReturnUrl = HttpUtility.UrlEncode(ReturnUrl)
If PortalSettings.UserRegistration = PortalRegistrationType.PublicRegistration Then
'Pass return url to register
Response.Redirect(RegisterURL(HttpUtility.UrlEncode(ReturnUrl), Null.NullString), True)
ElseIf PortalSettings.UserRegistration = PortalRegistrationType.VerifiedRegistration Then
'Pass return url to register as original url and return to this control to login after regsitration
Response.Redirect(RegisterURL(HttpUtility.UrlEncode(Request.RawUrl), Null.NullString), True)
End If
End If
End Sub
In this event handler, UrlEncode can be called twice on the same URL. Removing the second call to UrlEncode would avoid that and improve efficiency by eliminating a redundant call. Like so:
Private Sub cmdRegister_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmdRegister.Click
If PortalSettings.UserRegistration <> PortalRegistrationType.NoRegistration Then
Dim ReturnUrl As String = NavigateURL()
If Not String.IsNullOrEmpty(Request.QueryString("returnurl")) Then
ReturnUrl = Request.QueryString("returnurl")
End If
ReturnUrl = HttpUtility.UrlEncode(ReturnUrl)
If PortalSettings.UserRegistration = PortalRegistrationType.PublicRegistration Then
'Pass return url to register
Response.Redirect(RegisterURL(ReturnUrl, Null.NullString), True)
ElseIf PortalSettings.UserRegistration = PortalRegistrationType.VerifiedRegistration Then
'Pass return url to register as original url and return to this control to login after regsitration
Response.Redirect(RegisterURL(HttpUtility.UrlEncode(Request.RawUrl), Null.NullString), True)
End If
End If
End Sub
IMHO, these are coding errors and easy to fix, so I can't see why they wouldn't be fixed.