Para gente seria

22/06/2005 - 16:58 por marco | Informe spam
Perdon por insistir...
Hola a todos, gracias por leer este mensaje.

Notas:
La configuracion del IIS es con autenticacion anonima y windows (de otro
modo no puedo modificar, depurar, etc.) El Windows SBS 2003 no se puede
quitar porque es la licencia que trae el servidor. El sitio de Microsoft no
ofrece informacion sobre esta conducta. Libros ya tengo.

El problema:
He implementado la autenticacion por forms usando una pagina login.aspx y
funciona de maravilla en máquinas con Windows 2000 Pro, XP Pro SP2 y Windows
2003 Web Edition, pero en un servidor Small Business Server tiene una
conducta atípica, al intentar hacer login el usuario efectivamente queda
autenticado, pero permanece en la página de login.

El web.config contiene esto:
...
<authentication mode="Forms">
<forms name=".user" loginUrl="~/login.aspx" protection="All"
timeout="720" slidingExpiration="true" />
</authentication>

<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
...

el login.aspx contiene esto al inicio:

Imports System.Diagnostics
Imports System.Data.SqlClient
Imports System.Web.Security

El boton para autenticar contiene esto (solo pongo la parte que corre cuando
el usuario es valido):
...

Private Sub btnSignin_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btnSignin.Click
...
'//////////////////////////////////////////
' Generar un ticket de authenticacion
Dim tkt As FormsAuthenticationTicket
Dim cookiestr As String
Dim blnPersiste As Boolean = False
Dim intMinutos As Int16 = 30
Dim ck As HttpCookie

blnPersiste = True

tkt = New FormsAuthenticationTicket(1, _
user_id, _
DateTime.Now(), _
DateTime.Now.AddMinutes(intMinutos), _
blnPersiste, _
user_name)

cookiestr = FormsAuthentication.Encrypt(tkt)

ck = New HttpCookie( _
FormsAuthentication.FormsCookieName(),cookiestr)

If blnPersiste Then ck.Expires = tkt.Expiration

ck.Path = FormsAuthentication.FormsCookiePath()
Response.Cookies.Add(ck)

Dim strRedirect As String
strRedirect = Request("ReturnURL")
If strRedirect <> "" Then
Response.Redirect(strRedirect, True)
Else
strRedirect = "default.aspx"
Response.Redirect(strRedirect, True)
End If
'//////////////////////////////////////////
...

Comentarios: He sustituido las lineas Response.Redirect por Server.Transfer,
ya que las primeras envian a una página en blanco.

Suponiendo que la lógica del ASP.NET está bien, ya que funciona en otros
sistemas operativos, qué se debe configurar en el Small Business Server para
que funcione?

Mil gracias

Marco Padierna
 

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
23/06/2005 - 00:08 | Informe spam
¿Tienes algun codigo para el evento AuthenticateRequest en el global.asax?

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo

Preguntas similares