1

我有一个看起来像这样的客户解析器:

[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 init 方法中放置了一个断点并调用它。

如果我从网络配置中删除一切都很好!

任何想法有什么问题

4

1 回答 1

0

它看起来像属性参数 SchemaLocation 是错误的。尝试这样的事情:

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

如果您的 cache.xsd 在程序集的根目录中,它必须工作。

于 2009-08-19T10:08:03.100 回答