J'ai une application web qui accède à une base de données via un service wcf. L'idée est d'extraire les données de l'application web en utilisant le service wcf. Tout cela fonctionne bien, mais j'utilise aussi le roleprovider intégré en utilisant le SqlRoleManager qui accède directement à la base de données aspnetdb. Je voudrais abstraire le fournisseur de rôles en créant un fournisseur de rôles personnalisé dans un service wcf et en y accédant via le service wcf.Puis-je créer un fournisseur de rôles personnalisé via un service WCF?
J'ai créé le fournisseur de rôle personnalisé et cela fonctionne bien, mais maintenant je dois le placer dans un service wcf. Avant de sauter la tête pour essayer de faire fonctionner le service WCF, j'ai créé une deuxième classe dans l'application web qui a accédé à la classe roleprovider et modifié mes paramètres de fournisseur de rôle web config pour utiliser cette classe. Donc, ma classe RoleProvider est appelée, "UcfCstRoleProvider" et mon web.config ressemble à ceci:
<roleManager
enabled="true"
defaultProvider="UcfCstRoleProvider">
<providers>
<add
name="UcfCstRoleProvider"
type="Ucf.Security.Wcf.WebTests.UcfCstRoleProvider, Ucf.Security.Wcf.WebTests"
connectionStringName="SqlRoleManagerConnection"
applicationName="SMTP" />
</providers>
</roleManager>
Ma classe commence comme ceci:
public class UcfCstRoleProvider : RoleProvider
{
private readonly WindowsTokenRoleProvider _roleProxy = new WindowsTokenRoleProvider();
public override string ApplicationName
{
get
{
return _roleProxy.ApplicationName;
}
set
{
_roleProxy.ApplicationName = value;
}
}
Comme je l'ai dit, cela fonctionne très bien. Ainsi, la seconde classe s'appelle BlRoleProvider qui a des propriétés et des paramètres identiques à ceux du rôleprovide mais n'implémente pas RoleProvider. J'ai changé le web.config pour pointer vers cette classe comme ceci:
<roleManager
enabled="true"
defaultProvider="BlRoleProvider">
<providers>
<add
name="UcfCstRoleProvider"
type="Ucf.Security.Wcf.WebTests.BlRoleProvider, Ucf.Security.Wcf.WebTests"
connectionStringName="SqlRoleManagerConnection"
applicationName="SMTP" />
</providers>
</roleManager>
Mais j'obtiens cette erreur. "Le fournisseur doit implémenter la classe" System.Web.Security.RoleProvider "."
J'espère que j'ai expliqué assez bien pour montrer ce que j'essaie de faire. Si je peux obtenir que le fournisseur de rôle travaille à travers une autre classe dans la même application, je suis sûr que cela fonctionnera à travers le service WCF, mais comment puis-je passer cette erreur?
Ou peut-être que j'ai pris un mauvais virage et qu'il y a une meilleure façon de faire ce que je veux faire?