Small Business Server 2003

22/06/2005 - 17:01 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.

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 Guillermo Delprato [MS-MVP]
23/06/2005 - 05:01 | Informe spam
Tienes el grupo microsoft.public.es.iis

Saludos

Guillermo Delprato
MVP-MCT-MCSE-MCSA-MCP
Buenos Aires, Argentina

NOTA. Por favor, las preguntas y comentarios en los grupos, así nos
beneficiamos todos. Este mensaje se proporciona "como está" sin
garantías de ninguna clase, y no otorga ningún derecho. Ud. asume los
riesgos This posting is provided "AS IS" with no warranties, and
confers no rights. You assume all risk for your use.



marco wrote:
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.

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

Preguntas similares