2009-08-18 5 views
1

J'ai un analyseur de client qui ressemble à ceci:analyseur espace nom client Spring.net

[NamespaceParser(
Namespace = "http://mysite/schema/cache", 
SchemaLocationAssemblyHint = typeof(CacheNamespaceParser), 
SchemaLocation = "/cache.xsd" 
) 
] 
public class CacheNamespaceParser : NamespaceParserSupport 
{ 
public override void Init() 
{ 
RegisterObjectDefinitionParser("cache", new CacheParser()); 
} 
} 


public class CacheParser : AbstractSimpleObjectDefinitionParser 
{ 

protected override Type GetObjectType(XmlElement element) 
{ 
return typeof(CacheDefinition); 
} 

protected override void DoParse(XmlElement element, ObjectDefinitionBuilder builder) 
{ 

} 

protected override bool ShouldGenerateIdAsFallback 
{ 
get { return true; } 
} 
} 

dans la configuration web j'ai la configuration suivante ....

<spring> 
<parsers> 
<parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"/> 
<parser type="App.Web.CacheNamespaceParser, WebApp" /> 
</parsers> 

Quand je lance le projet, j'obtiens l'erreur suivante:

Une erreur s'est produite lors de la création du gestionnaire de section de configuration pour les analyseurs de printemps/analyseurs: Nom de ressource non valide. Le nom doit être dans 'assembly:<assemblyName>/<namespace>/<resourceName>' format.

J'ai mis un point d'arrêt dans la méthode d'initialisation CacheNamespaceParser et il est appelé.

Si je supprime de la configuration web tout va bien!

Toutes les idées ce qui est erroné

+0

Il semble que cette exception provienne du constructeur SpringRore.IO AssemblyResource. Est-ce lié à l'attribut: NamespaceParser ( Namespace = "http: // monsite/schéma/cache", SchemaLocationAssemblyHint = typeof (CacheNamespaceParser), schemaLocation = "/cache.xsd" ) ? – iasksillyquestions

+0

Le resourceName passé au constructeur ci-dessus assemblage: // WebApp, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null/cache.xsd » \t chaîne Il me semble avoir le nom de la ressource, un nom d'assemblage, mais pas nom de l'espace de nom ... – iasksillyquestions

Répondre

0

Son look comme paramètre attributs schemaLocation est erroné. Essayez quelque chose comme ceci:

[NamespaceParser(
Namespace = "http://mysite/schema/cache", 
SchemaLocationAssemblyHint = typeof(CacheNamespaceParser), 
SchemaLocation = "/YOUR_ASEMBLY_NAME/cache.xsd")] 

Cela doit fonctionner si votre cache.xsd est à la racine de l'assemblage.