I can't seem to get this working using the config sections above. My web.config file is below. I'm using the 12/15 nightly build of 2.0. I have an entity called Building and I'm calling an insert like this:
Building b = new Building();
b.BuildingName = "test";
BuildingService bs = new BuildingService();
bs.Insert(b);
I'm getting an exception when it tries to get the RuleProvider in SecurityContext.cs on line 100:
"ruleProvider = AuthorizationFactory.GetAuthorizationProvider(ruleProviderKey);"
The exception that is passed back to the IsAuthorized method says " _COMPlusExceptionCode = -532459699 ".
Very strange. Any ideas or better code samples for Method authorization and the web.config configuration sections??
Thanks!!
Anne
-------------web.config--------------
<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<configSections>
<section name="netTiersService" type="RR.DataAccessLayer.Bases.NetTiersServiceSection, RR.DataAccessLayer" allowDefinition="MachineToApplication" restartOnExternalChanges="true" />
<section name="securityConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Security.Configuration.SecuritySettings, Microsoft.Practices.EnterpriseLibrary.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
<section name="securityCryptographyConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.Configuration.CryptographySettings, Microsoft.Practices.EnterpriseLibrary.Security.Cryptography, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
</configSections>
<appSettings>
</appSettings>
<connectionStrings>
<add name="ConnectionString" connectionString="{stringhere}" />
</connectionStrings>
<location path="admin">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
<system.web>
<compilation debug="true" />
<authentication mode="Forms">
<forms loginUrl="Login.aspx"
protection="All"
timeout="30"
name="Cookie"
path="/"
requireSSL="false"
slidingExpiration="true"
defaultUrl="admin/default.aspx"
cookieless="UseCookies"
enableCrossAppRedirects="false" />
</authentication>
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
<providers>
<clear />
<add
name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="ConnectionString"
applicationName="RR"
enablePasswordRetrieval="true"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
passwordFormat="Clear"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
/>
</providers>
</membership>
<roleManager defaultProvider="SqlRoleProvider" enabled="true">
<providers>
<clear/>
<add name="SqlRoleProvider" connectionStringName="ConnectionString"
applicationName="EAGM"
type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
</system.web>
<netTiersService defaultProvider="SqlNetTiersProvider">
<providers>
<add
name="SqlNetTiersProvider"
type="RR.DataAccessLayer.SqlClient.SqlNetTiersProvider, RR.DataAccessLayer.SqlClient"
connectionStringName="ConnectionString"
providerInvariantName="System.Data.SqlClient"
entityFactoryType="RR.EntitiesLayer.EntityFactory"
useEntityFactory="true"
enableEntityTracking="true"
enableMethodAuthorization="true"
useStoredProcedure="false"
/>
</providers>
</netTiersService>
<securityConfiguration defaultAuthorizationInstance="netTiersRuleProvider"
defaultSecurityCacheInstance="Caching Store Provider">
<authorizationProviders>
<add
type="Microsoft.Practices.EnterpriseLibrary.Security.AuthorizationRuleProvider, Microsoft.Practices.EnterpriseLibrary.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"
name="netTiersRuleProvider">
<rules>
<add name="Building.Insert" expression="((R:WebsiteAdmins))" />
</rules>
</add>
</authorizationProviders>
<securityCacheProviders>
<add cacheManagerInstanceName="Cache Manager" defaultSlidingSessionExpirationInMinutes="10"
defaultAbsoluteSessionExpirationInMinutes="60"
type="Microsoft.Practices.EnterpriseLibrary.Security.Cache.CachingStore.CachingStoreProvider, Microsoft.Practices.EnterpriseLibrary.Security.Cache.CachingStore, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"
name="Caching Store Provider" />
</securityCacheProviders>
</securityConfiguration>
</configuration>