Toon posts:

[ASP.NET] Onverwachte foutmelding bij gebruik van Membership

Pagina: 1
Acties:
  • 357 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Visual Studio 2005 komt met een webapplicatie waarmee je een ASP.NET WebSite die gebruik maakt van Membership kunt configureren, de Web Site Administration Tool (te vinden onder WebSite > ASP.NET Configuration).

Alle functionaliteit werkt, behalve het toevoegen van een gebruiker. Dan krijg ik de volgende foutmelding:
Het doel van een aanroep heeft een uitzondering veroorzaakt.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bij System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
bij System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
bij System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
bij System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
bij System.Web.Administration.WebAdminMembershipProvider.CallWebAdminMembershipProviderHelperMethodOutParams(String methodName, Object[] parameters, Type[] paramTypes)
bij System.Web.Administration.WebAdminMembershipProvider.CreateUser(String username, String password, String email, String passwordQuestion, String passwordAnswer, Boolean isApproved, Object providerUserKey, MembershipCreateStatus& status)
bij System.Web.UI.WebControls.CreateUserWizard.AttemptCreateUser()
bij System.Web.UI.WebControls.CreateUserWizard.OnNextButtonClick(WizardNavigationEventArgs e)
bij System.Web.UI.WebControls.Wizard.OnBubbleEvent(Object source, EventArgs e)
bij System.Web.UI.WebControls.CreateUserWizard.OnBubbleEvent(Object source, EventArgs e)
bij System.Web.UI.WebControls.Wizard.WizardChildTable.OnBubbleEvent(Object source, EventArgs args)
bij System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
bij System.Web.UI.WebControls.Button.OnCommand(CommandEventArgs e)
bij System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
bij System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
bij System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
bij System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
bij System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Het is nogal een hoop informatie, dus heb ik het even in een codeblock gezet voor het overzicht. Dit is dus geen code, maar gewoon de foutmelding.

Is er iemand die meer ervaring heeft met het opsporen van fouten? Want ik heb dus geen flauw idee wat hier nu de fout veroorzaakt.

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:15
Tja, wat je hier toont is gewoon de stacktrace. Daarmee kan je zien waar de fout optreedt.
Als je daarbij ook nog eens de Exception.Message bekijkt, dan kan je je al een idee vormen wat er fout gaat, en waar het fout gaat.
De volgende stap is: een breakpoint zetten in de method waar de boel misloopt.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Maar waar treedt dan de fout op? In welke methode precies? Ik zal proberen een breakpoint te zetten in de code, alleen de code is van Microsoft, het wordt geinstalleerd met Visual Studio, dus ik weet niet zeker of dat gaat lukken.

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:15
Zie je stacktrace; daar zie je waar de fout optreedt.
Een stack is een LIFO structuur; in dit geval weet je dus dat de ProcessRequestMain method de RaisePostBack method aan geroepen heeft, etc...
Je ziet ook dat op een gegeven moment de AttemptCreateUser method aangeroepen wordt, die op zijn beurt de CreateUser method aanroept... ik zou daar eens een breakpoint zetten, en stap voor stap door je code wandelen.
Lees ook eens de foutmelding zelf.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ok bedankt. Maar je kunt dus niet aan een stack trace zien in welke methode de fout optreedt? Is dat niet gewoon de laatst toegevoegde methode, dus in dit geval System.RuntimeMethodHandle._InvokeMethodFast()?

Ik wil ook wel een breakpoint zetten, maar het is dus zoals gezegd code van Microsoft. Ik heb de code wel gevonden, deze staat in de folder ASP.NETWebAdminFiles in de framework folder (v2.0.50727). Helaas heeft MS er bij deze webapplicatie voor gekozen alle C# code in <script> blokken te zetten. En daar kan ik geen breakpoint in maken ("This is not a valid location for a breakpoint").

  • cowgirl
  • Registratie: November 2000
  • Laatst online: 17-12-2020
Ik kan je overigens ook adviseren op een ontwikkel-pc het dutch language pack van .NET te deinstalleren. Met engelse foutmeldingen is het veel makkelijker zoeken op internet.

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:15
Verwijderd schreef op maandag 06 november 2006 @ 11:54:
Ok bedankt. Maar je kunt dus niet aan een stack trace zien in welke methode de fout optreedt? Is dat niet gewoon de laatst toegevoegde methode, dus in dit geval System.RuntimeMethodHandle._InvokeMethodFast()?
Het loopt verkeerd bij het invoken van een method. _InvokeMethodFast is idd de method die het laatst opgeroepen werd, maar dit is een 'interne' method binnen de runtime. Vandaar dat ik denk dat de fout eerder z'n oorsprong zal hebben in CreateUser.

Maar, je hebt nu nog altijd niet verteld welke foutmelding je krijgt...

[ Voor 6% gewijzigd door whoami op 06-11-2006 11:57 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
Ik heb in de web.config van de WebSite Administration Tool debug op true gezet. Nu krijg ik een betere foutmelding:
Waarde kan niet null zijn. Parameternaam: virtualPath
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
bij System.Web.VirtualPath.Create(String virtualPath, VirtualPathOptions options)
bij System.Web.VirtualPath.CreateAbsolute(String virtualPath)
bij System.Web.Hosting.ApplicationManager.CreateObject(String appId, Type type, String virtualPath, String physicalPath, Boolean failIfExists, Boolean throwOnError)
bij System.Web.Hosting.ApplicationManager.CreateObject(String appId, Type type, String virtualPath, String physicalPath, Boolean failIfExists, Boolean throwOnError)
bij System.Web.Administration.WebAdminRemotingManager.CreateConfigurationHelper()
in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles\App_Code\WebAdminPage.cs:regel 995
bij System.Web.Administration.WebAdminRemotingManager.get_ConfigurationHelperInstance()
in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles\App_Code\WebAdminPage.cs:regel 958
bij System.Web.Administration.WebAdminMembershipProvider.GetWebAdminMembershipProviderHelperProperty(String propertyName)
in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles\App_Code\WebAdminPage.cs:regel 618
bij System.Web.Administration.WebAdminMembershipProvider.get_RequiresQuestionAndAnswer()
in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles\App_Code\WebAdminPage.cs:regel 656
bij System.Web.UI.WebControls.CreateUserWizard.get_QuestionAndAnswerRequired()
bij System.Web.UI.WebControls.CreateUserWizard.UpdateValidators()
bij System.Web.UI.WebControls.CreateUserWizard.CreateChildControls()
bij System.Web.UI.Control.EnsureChildControls()
bij System.Web.UI.WebControls.Wizard.OnInit(EventArgs e)
bij System.Web.UI.Control.InitRecursive(Control namingContainer)
bij System.Web.UI.Control.InitRecursive(Control namingContainer)
bij System.Web.UI.Control.InitRecursive(Control namingContainer)
bij System.Web.UI.Control.InitRecursive(Control namingContainer)
bij System.Web.UI.Control.InitRecursive(Control namingContainer)
bij System.Web.UI.Control.InitRecursive(Control namingContainer)
bij System.Web.UI.Control.InitRecursive(Control namingContainer)
bij System.Web.UI.Control.InitRecursive(Control namingContainer)
bij System.Web.UI.Control.InitRecursive(Control namingContainer)
bij System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Omdat deze code (5 t/m 12 in de stacktrace) in App_Code staat kan ik hier wel een breakpoint in zetten. Ik zal kijken of ik het probleem daarmee op kan lossen.

Verwijderd

Topicstarter
Ok, gevonden. Probleem was dat de daadwerkelijk nuttige foutmelding in een InnerException zat welke ook weer in een InnerException zat van de exception die uiteindelijk in de GUI getoond werd.

De oorspronkelijke fout was als volgt:
You must specify a non-autogenerated machine key to store passwords in the encrypted format. Either specify a different passwordFormat, or change the machineKey configuration to use a non-autogenerated decryption key.
De oplossing was daarna simpel.

Bedankt iig voor de hulp!
Pagina: 1