Анализатор на пространство от имена на клиенти 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; }
}
}

в уеб конфигурацията имам следната конфигурация....

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

Когато стартирам проекта, получавам следната грешка:

Възникна грешка при създаването на манипулатора на конфигурационната секция за spring/parsers: Невалидно име на ресурс. Името трябва да е на 'assembly:<assemblyName>/<namespace>/<resourceName>' format.

Поставям точка на прекъсване в метода за иницииране на CacheNamespaceParser и той се извиква.

Ако премахна от уеб конфигурацията, всичко е наред!

Някакви идеи какво не е наред


person iasksillyquestions    schedule 18.08.2009    source източник
comment
Изглежда, че това изключение идва от конструктора Spring.Core.IO AssemblyResource. Това свързано ли е с атрибута: NamespaceParser( Namespace = mysite/schema/cache, SchemaLocationAssemblyHint = typeof(CacheNamespaceParser), SchemaLocation = /cache.xsd )?   -  person iasksillyquestions    schedule 18.08.2009
comment
ResourceName, предадено на горния конструктор: сборка // WebApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null/cache.xsd низ Изглежда имам име на ресурс, име на сборка, но без име на пространство от имена...   -  person iasksillyquestions    schedule 18.08.2009


Отговори (1)


Параметърът SchemaLocation на външния вид на атрибутите е грешен. Опитайте нещо подобно:

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

Трябва да работи, ако вашият cache.xsd е в корена на сборката.

person admax    schedule 19.08.2009