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方法中放置了一个断点并调用它。
如果我从网络配置中删除 一切都很好!
任何想法什么是错的
答
它看起来像属性参数SchemaLocation是错误的。尝试这样的:
[NamespaceParser(
Namespace = "http://mysite/schema/cache",
SchemaLocationAssemblyHint = typeof(CacheNamespaceParser),
SchemaLocation = "/YOUR_ASEMBLY_NAME/cache.xsd")]
它必须工作,如果你的cache.xsd在程序集的根。
看起来,这个异常来自Spring.Core.IO AssemblyResource构造函数。这是关系到属性: NamespaceParser( 命名空间= “HTTP:// mysite的/模式/高速缓存”, SchemaLocationAssemblyHint = typeof运算(CacheNamespaceParser), SCHEMALOCATION = “/cache.xsd” ) ? – iasksillyquestions 2009-08-18 12:36:22
的资源名称传递给上述构造 装配:// Web应用程序,版本= 1.0.0.0,文化=中立,公钥=空/ cache.xsd” \t串 我似乎有资源名称,集名称,但没有命名空间名称... – iasksillyquestions 2009-08-18 14:59:34