Парсер пространства имен клиентов 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
Имя ресурса, переданное указанной выше сборке конструктора: // WebApp, Версия = 1.0.0.0, Культура = нейтральный, 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