Avatar billede mikkel_strack Nybegynder
02. januar 2007 - 17:30 Der er 14 kommentarer og
2 løsninger

User.IsInRole er altid false

Hej

Jeg bnytter mig af Membership og Roles i asp.net 2.0, men desværre er der en bug i funktionen User.IsInRole. Den er altid false.

Bug'en er beskrevet her: http://support.microsoft.com/kb/894432

Er der nogen som fatter det indholdet af ovenstående link bedre end mig? Som jeg læser det, er den eneste mulighed at lave fiks med webserveren - men den mulighed er det jo de færreste af os som har.

Mvh. Mikkel...og godt nytår!
Avatar billede dr_chaos Nybegynder
02. januar 2007 - 20:39 #1
kalder du hjemmesiden fra et netværksdrev ?
Avatar billede mikkel_strack Nybegynder
03. januar 2007 - 03:15 #2
Jeg er ikke helt sikker på om jeg forstår hvad du mener?

Det er samme fejl uanset om jeg afvikler det lokalt eller på serveren hos dandomain hvor siden hostes.
Avatar billede dr_chaos Nybegynder
03. januar 2007 - 08:50 #3
Hvordan tilføjer du brugere til en rolle?
Avatar billede xguy Nybegynder
03. januar 2007 - 10:07 #4
Er buggen ikke kun i ASP.NET 1.x? Det står der i KB artiklen.

Har du husket at der er forskel på "admin" og "Admin" fx?
Avatar billede mikkel_strack Nybegynder
03. januar 2007 - 10:34 #5
Til dr_chaos

I min CreatedUserWizard har jeg OnCreatedUser="test"

void test(object sender, EventArgs e)
{
    Roles.AddUserToRole(User.UserName, "Administrator");
}

Til xguy

Jeg er klar over at det er casesensitivt - og tro mig når jeg skriver at jeg har tjekket mange gange :o)
Mig bekendt er Membership, Roles og Profiles alene en asp.net 2.0 ting, så af den grund må artiklen vel også gælde 2.0.
Avatar billede dr_chaos Nybegynder
03. januar 2007 - 10:41 #6
vedr xguy's kommentar, så vil jeg mene han har ret. Hvis du ser ude til højre henviser de kun til asp.net 1.0 og 1.1 center.

hvad sker der hvis du prøver med:
Til dr_chaos

I min CreatedUserWizard har jeg OnCreatedUser="test"

void test(object sender, EventArgs e)
{
    Roles.AddUserToRole(User.UserName, "Administrator");
System.Diagnostics.Debug.WriteLine(User.IsInRole("Administrator"));
}
Avatar billede xguy Nybegynder
03. januar 2007 - 10:55 #7
Der står ikke noget om Membership, Roles og Profiles i artiklen, så det mener jeg ikke man kan sige. User.IsInRole() findes også i 1.x, hvis det er der du får ideen fra.

Jeg tror ikke årsagen til dit problem er den samme som den i artiklen. Problemet har du jo også når sitet ligger på din webhost.

Hvad nu hvis du bruger Roles.RoleExists() på en rolle som skulle være added til en bruger, men hvor du får false tilbage ved User.IsInRole()?
Avatar billede mikkel_strack Nybegynder
03. januar 2007 - 12:50 #8
Pis-siden her gik var gået ned lige som jeg postede et indlæg. Hvornår lærer man at kopiere inden man trykker send.

Nå, men viste sig - som I var inde på at være et andet problem.

Det er første gang jeg arbejder med Membership osv, så er lidt i blinde.

Opretter et website i Visual Web Developer og fikser web.config efter en vejledning på 4guysfromrolla.com. Jeg gemmer ikke data i App_Data men i en sql-server.
Min web.config ser ud som følger:

<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <connectionStrings>
    <add name="MyDB" connectionString="Server=***********;Database=e20;User ID=***;Password=***;Trusted_Connection=False" />
  </connectionStrings>
  <system.web>
    <authentication mode="Forms"/>
    <membership defaultProvider="CustomizedProvider">
      <providers>
        <add name="CustomizedProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="MyDB" applicationName="testProfile" minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="0"  requiresQuestionAndAnswer="false" />
      </providers>
    </membership>
    <roleManager enabled="true"
            defaultProvider="CustomizedRoleProvider">
      <providers>
        <add name="CustomizedRoleProvider"
            type="System.Web.Security.SqlRoleProvider"
            connectionStringName="MyDB" />
      </providers>
    </roleManager>
    <compilation debug="true"/>
  </system.web>
</configuration>

Rollerne opretter jeg inde i website configuration.

Det virker helt fint, og efter jeg har bøvlet lidt rundt så vælger jeg at starte på en frisk i et nyt website. Jeg kopierer web.config over i det nye website, og tænker dermed at den benytter de samme Users og Roles. Pudsigt nok viser det sig at Roles ikke eksisterer, mens Users stadig er der? Kan nogen af jer - evt. ud fra web.config komme med en forklaring?

Nå, men jeg fik løst mit problem, så tid til point. Eftersom I begge ledte mig på rette vej, så synes jeg det er rimeligt at I deler.
Nu er 30 point lidt sølle at dele, så hvis det har nogen betydning skal jeg gerne oprette et point-spørgsmål så I kan 30 hver. I så fald råb lige højt - er ingen grund til at belaste eksperten mere end højst nødvendigt :o)
Avatar billede xguy Nybegynder
03. januar 2007 - 13:14 #9
Mht. point så er det mig ligemeget. Men du kan evt. bare tildele flere point til dette spørgsmål, i stedet for at oprette et ekstra.

Mht Roles...

Jeg mener at man skal have en applicationName attributte på, når man tilføjer en provider. Det gælder både Membership, Roles og Profile. Så:

<add
name="CustomizedRoleProvider"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="MyDB"
applicationName="minApp"
/>
Avatar billede xguy Nybegynder
03. januar 2007 - 13:20 #10
Avatar billede xguy Nybegynder
03. januar 2007 - 13:23 #11
Nå, det var tid til et svar... :)
Avatar billede dr_chaos Nybegynder
03. januar 2007 - 13:23 #12
Jeg klarer mig fint uden application name:
<roleManager enabled="true" defaultProvider="MyCustomRoleProvider" domain="" cacheRolesInCookie="true">
            <providers>
                <add name="MyCustomRoleProvider" type="MyCustomRoleProvider"/>
            </providers>
        </roleManager>

Men jeg har så også lavet min egen role klasse som nedarver fra sqlroleprovider.

Mht points gør du bare som du finder bedst :)
Jeg mangler ikke lige frem.
Avatar billede dr_chaos Nybegynder
03. januar 2007 - 13:24 #13
også svar fra mig :)
Avatar billede mikkel_strack Nybegynder
03. januar 2007 - 13:43 #14
Tak for hjælp og deltagelse :)
Avatar billede dr_chaos Nybegynder
03. januar 2007 - 13:48 #15
np :)
Avatar billede xguy Nybegynder
03. januar 2007 - 14:06 #16
Så lidt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester