Bonjour à tous !

je viens de suivre un tuto de chez vous, concernant l' URLrewriting
(http://nico-pyright.developpez.com/t...ritehttpmodule)
donc dans les grandes lignes j'ai compris le system, c'est pour le metre en place que je block...

La méthode du global.asax est assé simple mais effectivement comme dit dans le tuto, on voi arriver les if en pagaille pour chaque page du site...
toujours bon à savoir et pratique pour comprendre la logique mais pas vraiment exploitable sur une grosse structure, et ne parlons meme pas de la maintenance.

J'ai continué pour en arriver au module HTTP qui lui m'interesse bien vu la méthode de configuration via le web.config

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
<UrlRewriterConfigurationSection>
	<rewriting map="/home.html" to="~/Default.aspx" />
</UrlRewriterConfigurationSection>
Mais je ne comprend pas certain point, n'ayant jamais crée de module j'ai suivie les conseils et liens pour apprendre à créer un module personnalisé basic, ce qui fonctionne trés bien.

De retour sur le tuto je n'arrive pas à suivre...
je me retrouve avec ma classe dans son dossier App_Code comme ca:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Description résumée de URLrewritingClass
/// </summary>
/// 
   public class URLrewritingClass : IHttpModule
    {
        public void Init(HttpApplication context)
        {
            context.BeginRequest += context_BeginRequest;
        }
 
        private void context_BeginRequest(object sender, EventArgs e)
        {
            HttpApplication application = sender as HttpApplication;
            HttpContext context = (application == null) ? null : application.Context;
            if (context != null)
            {
                HttpRequest request = context.Request;
                // ici faire l'url rewriting
                string urlAbsolutePath = request.Url.AbsolutePath;
                if (urlAbsolutePath.EndsWith(".html"))
                {
                    UrlRewriterConfigurationSection section = (UrlRewriterConfigurationSection)ConfigurationManager.GetSection("UrlRewriterConfigurationSection");
                    foreach (ListeElement list in section.Listes)
                    {
                        if (urlAbsolutePath == list.Map)
                        {
                            context.RewritePath(list.To);
                            break;
                        }
                    }
                }
 
 
            }
        }
 
        public void Dispose()
        {
        }
    }
dans le meme dossier App_Code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
 
using System;
using System.Configuration;
 
namespace demoModuleSectionUrlRewriting
{
    public class UrlRewriterConfigurationSection : ConfigurationSection
    {
        private static readonly ConfigurationPropertyCollection _proprietes;
        private static readonly ConfigurationProperty _listes;
 
        static UrlRewriterConfigurationSection()
        {
            _listes = new ConfigurationProperty("", typeof(ListesElementCollection), 
				null, ConfigurationPropertyOptions.IsRequired | ConfigurationPropertyOptions.IsDefaultCollection);
            _proprietes = new ConfigurationPropertyCollection();
            _proprietes.Add(_listes);
        }
 
        public ListesElementCollection Listes
        {
            get { return (ListesElementCollection)base[_listes]; }
        }
 
        public new ListeElement this[string nom]
        {
            get { return Listes[nom]; }
        }
 
        protected override ConfigurationPropertyCollection Properties
        {
            get { return _proprietes; }
        }    
    }
 
    public class ListeElement : ConfigurationElement
    {
        private static readonly ConfigurationPropertyCollection _proprietes;
        private static readonly ConfigurationProperty _map;
        private static readonly ConfigurationProperty _to;
 
        static ListeElement()
        {
            _map = new ConfigurationProperty("map", typeof(string), null, ConfigurationPropertyOptions.IsKey);
            _to = new ConfigurationProperty("to", typeof(string), null, ConfigurationPropertyOptions.IsRequired);
            _proprietes = new ConfigurationPropertyCollection();
            _proprietes.Add(_map);
            _proprietes.Add(_to);
        }
 
        public string Map
        {
            get { return (string)base[_map]; }
            set { base[_map] = value; }
        }
 
        public string To
        {
            get { return (string)base[_to]; }
            set { base[_to] = value; }
        }
 
        protected override ConfigurationPropertyCollection Properties
        {
            get { return _proprietes; }
        }
    }
 
    public class ListesElementCollection : ConfigurationElementCollection
    {
        public override ConfigurationElementCollectionType CollectionType
        {
            get { return ConfigurationElementCollectionType.BasicMap; }
        }
        protected override string ElementName
        {
            get { return "rewriting"; }
        }
 
        protected override ConfigurationPropertyCollection Properties
        {
            get { return new ConfigurationPropertyCollection(); }
        }
 
        public ListeElement this[int index]
        {
            get { return (ListeElement)BaseGet(index); }
            set
            {
                if (BaseGet(index) != null)
                {
                    BaseRemoveAt(index);
                }
                base.BaseAdd(index, value);
            }
        }
 
        public new ListeElement this[string map]
        {
            get { return (ListeElement)BaseGet(map); }
        }
 
        public void Add(ListeElement item)
        {
            base.BaseAdd(item);
        }
 
        public void Remove(ListeElement item)
        {
            BaseRemove(item);
        }
 
        public void RemoveAt(int index)
        {
            BaseRemoveAt(index);
        }
 
        public void Clear()
        {
            BaseClear();
        }
 
        protected override ConfigurationElement CreateNewElement()
        {
            return new ListeElement();
        }
 
        protected override object GetElementKey(ConfigurationElement element)
        {
            if (element != null)
                return ((ListeElement)element).Map;
            else
                return null;
        }
    }
}
dans mon web.config :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
<httpModules>
	<add name="URLrewriterModule" type="demoModuleSectionUrlRewriting.URLrewritingClass, demoModuleSectionUrlRewriting"/>
</httpModules>
<configSections>
	<section name="UrlRewriterConfigurationSection" 
		type="demoModuleSectionUrlRewriting.UrlRewriterConfigurationSection, demoModuleSectionUrlRewriting" />
</configSections>
<UrlRewriterConfigurationSection>
	<rewriting map="/home.html" to="~/Default.aspx" />
</UrlRewriterConfigurationSection>
je me retrouve donc avec une erreur du type :
Le type ou le nom d'espace de noms 'UrlRewriterConfigurationSection' est introuvable (une directive using ou une référence d'assembly est-elle manquante ?)
Ca c'est sur je n'ai pas compris quelque chose avec les assembly...

Help ?
En vous remerciant par avance.