Hi, Tiaan.

It seems to me you'd want to use 'string.IsNullOrEmpty(username)'
instead of '(username != null && username.Length <= 0)'

Eyal.

-----Original Message-----
From: mono-devel-list-boun...@lists.ximian.com
[mailto:mono-devel-list-boun...@lists.ximian.com] On Behalf Of Tiaan
Geldenhuys
Sent: Thursday, February 11, 2010 11:17 AM
To: mono-devel-list@lists.ximian.com
Cc: mhabers...@novell.com
Subject: [Mono-dev] [PATCH] Fix Roles.IsUserInRole and enhance
WebTestFramework

The attached patch is a fix for System.Web.Security.Roles.IsUserInRole
to prevent ASP.NET MVC errors like the one shown at the bottom, which
happens when a user hasn't logged on and requests public pages with
sections that are dynamically removed using role-based
access-restrictions.  It now behaves more like .NET that does not throw
an exception.

Writing a test for this fix was a bit of a challenge -- it's no wonder
there is not any working test for the Roles class yet.  :)  To address
this, the MonoTests.SystemWeb.Framework.WebTest class was updated
slightly to make it possible to write self-contained tests for cases
where you might want more control over the resources that are copied to
your hosted web application, such as when creating Web.config files
dynamically.  The test for the current fix also serves as an example of
how this can be done.  If these changes are approved, one can expand on
this for all the other Roles methods.

Please review and commit.

Thank you,
Tiaan.

NOTE: The patch files can be used without changes on both trunk and the
2.6 branch.

---------------

[System.Web.HttpUnhandledException]: Exception of type
'System.Web.HttpUnhandledException' was thrown.
  at System.Web.UI.Page.ProcessException (System.Exception e) [0x00000]
in <filename unknown>:0
  at System.Web.UI.Page.ProcessRequest (System.Web.HttpContext context)
[0x00000] in <filename unknown>:0
  at System.Web.HttpApplication+<Pipeline>c__Iterator5.MoveNext ()
[0x00000] in <filename unknown>:0
  at System.Web.HttpApplication.Tick () [0x00000] in <filename
unknown>:0
[System.Web.HttpUnhandledException]: Exception of type
'System.Web.HttpUnhandledException' was thrown.
  at System.Web.UI.Page.ProcessException (System.Exception e) [0x00000]
in <filename unknown>:0
  at System.Web.UI.Page.ProcessRequest (System.Web.HttpContext context)
[0x00000] in <filename unknown>:0
  at System.Web.Mvc.ViewPage.RenderView (System.Web.Mvc.ViewContext
viewContext) [0x00000] in <filename unknown>:0
  at System.Web.Mvc.WebFormView.RenderViewPage
(System.Web.Mvc.ViewContext context, System.Web.Mvc.ViewPage page)
[0x00000] in <filename unknown>:0
  at System.Web.Mvc.WebFormView.Render (System.Web.Mvc.ViewContext
viewContext, System.IO.TextWriter writer) [0x00000] in <filename
unknown>:0
  at System.Web.Mvc.ViewResultBase.ExecuteResult
(System.Web.Mvc.ControllerContext context) [0x00000] in <filename
unknown>:0

  at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult
(System.Web.Mvc.ControllerContext controllerContext,
System.Web.Mvc.ActionResult actionResult) [0x00000] in <filename
unknown>:0
  at
System.Web.Mvc.ControllerActionInvoker+<InvokeActionResultWithFilters>c_
_Ano
nStoreyE.<>m__11 () [0x00000] in <filename unknown>:0
  at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter
(IResultFilter filter, System.Web.Mvc.ResultExecutingContext preContext,
System.Func`1 continuation) [0x00000] in <filename unknown>:0
[System.ArgumentException]: Username cannot be empty.
  at SomeRoleProvider.IsUserInRole (System.String username,
System.String
roleName) [0x00000] in <filename unknown>:0
  at System.Web.Security.Roles.IsUserInRole (System.String rolename)
[0x00000] in <filename unknown>:0
  at ASP.views_shared_site_master.__RenderTree
(System.Web.UI.HtmlTextWriter __output, System.Web.UI.Control
parameterContainer) [0x00000] in <filename
unknown>:0
  at System.Web.UI.Control.RenderChildren (System.Web.UI.HtmlTextWriter
writer) [0x00000] in <filename unknown>:0
  at System.Web.UI.Control.Render (System.Web.UI.HtmlTextWriter writer)
[0x00000] in <filename unknown>:0
  at System.Web.UI.Control.RenderControl (System.Web.UI.HtmlTextWriter
writer) [0x00000] in <filename unknown>:0
  at System.Web.UI.Control.RenderChildren (System.Web.UI.HtmlTextWriter
writer) [0x00000] in <filename unknown>:0
  at System.Web.UI.Control.Render (System.Web.UI.HtmlTextWriter writer)
[0x00000] in <filename unknown>:0
  at System.Web.UI.Page.Render (System.Web.UI.HtmlTextWriter writer)
[0x00000] in <filename unknown>:0
  at System.Web.Mvc.ViewPage.Render (System.Web.UI.HtmlTextWriter
writer) [0x00000] in <filename unknown>:0
  at System.Web.UI.Control.RenderControl (System.Web.UI.HtmlTextWriter
writer) [0x00000] in <filename unknown>:0
  at System.Web.UI.Page.RenderPage () [0x00000] in <filename unknown>:0
  at System.Web.UI.Page.InternalProcessRequest () [0x00000] in <filename
unknown>:0
  at System.Web.UI.Page.ProcessRequest (System.Web.HttpContext context)
[0x00000] in <filename unknown>:0

===============



_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to