Dans le modèle de sécurité pour le site web sur ASP.Net (.Net 3.5) nous stockons le nom de la page.Programicatement visiter (toutes) page (s) ASP.Net dans un site web?
page.GetType() Nom
comme la clé primaire dans une table de base de données pour pouvoir recherche si un utilisateur a accès à une certaine page. La première fois qu'une page est visitée, cet enregistrement est créé automatiquement dans la base de données.
Nous avons exporté ces instructions de base de données pour insérer des scripts, mais chaque fois qu'une nouvelle page est créée, nous devons mettre à jour les scripts, pas un gros problème, mais je voudrais trouver une façon automatisée de le faire.
J'ai créé un attribut avec lequel j'ai tagué quelques pages, puis j'ai écrit un petit processus pour obtenir tous les objets ayant cet attribut, créer une instance et insérer l'enregistrement en utilisant le même code pour les enregistrements de pages mentionnés. ci-dessus:
IEnumerable<Type> viewsecurityPages = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.IsDefined(typeof(ViewSecurityAttribute),false));
foreach (Type t in viewsecurityPages)
{
object obj = Activator.CreateInstance(t, false);
//clip..(This code just checks if the record already exists in the DB)
if (feature == null)
{
Attribute attb = Attribute.GetCustomAttribute(t, typeof(ViewSecurityAttribute));
if (attb != null)
{
CreateSecurableFeatureForPage((Page)obj, uow, attb.ToString());
}
}
}
le problème est que page.GetType() Nom lorsque la page passe par le processus de cycle de page réelle est quelque chose comme ceci:.
search_accounts_aspx
mais quand je l'acte méthode ivator ci-dessus il retourne:
Comptes
Ainsi, les dossiers ne correspondent pas à la table de sécurité. Est-il possible de "visiter" une page Web de manière programmatique afin qu'elle traverse le cycle de vie réel de la page et que je récupère la valeur correcte du paramètre Nom?
Toute aide ou référence sera grandement appréciée.
J'ai oublié de mentionner que j'ai essayé une araignée. Le site est vraiment une application commerciale (vendue pour fonctionner sur des intranets internes) donc beaucoup de "liens" passent par des boutons de soumission, etc. Je pourrais travailler sur un sitemap je suppose ... Je n'avais pas pensé à changer l'attribut pour qu'il soit l'URI et utiliser une requête HTTP pour les visiter. Cela fonctionnerait mais exigerait toujours un effort manuel quand le site change, une pensée intéressante, je dois y penser. – mlowrance