Spring.net客户命名空间解析器

问题描述:

我有一个客户解析器,看起来像这样: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; } 
} 
} 
在web配置我有以下配置

....

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

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

任何想法什么是错的

+0

看起来,这个异常来自Spring.Core.IO AssemblyResource构造函数。这是关系到属性: NamespaceParser( 命名空间= “HTTP:// mysite的/模式/高速缓存”, SchemaLocationAssemblyHint = typeof运算(CacheNamespaceParser), SCHEMALOCATION = “/cache.xsd” ) ? – iasksillyquestions 2009-08-18 12:36:22

+0

的资源名称传递给上述构造 装配:// Web应用程序,版本= 1.0.0.0,文化=中立,公钥=空/ cache.xsd” \t串 我似乎有资源名称,集名称,但没有命名空间名称... – iasksillyquestions 2009-08-18 14:59:34

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

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

它必须工作,如果你的cache.xsd在程序集的根。