2009-08-18 2 views
1

고객 네임 스페이스 : 나는 다음과 같은 구성을 가지고있는 웹 설정에서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> 

내가 실행하면 프로젝트 다음 오류가 발생합니다.

봄/파서에 대한 구성 섹션 처리기를 만드는 동안 오류가 발생했습니다. 잘못된 리소스 이름입니다. 이름은 'assembly:<assemblyName>/<namespace>/<resourceName>' format.

입니다. CacheNamespaceParser init 메소드에 중단 점을 넣으면 호출됩니다.

웹 설정에서 을 삭제하면 모두 잘됩니다!

+0

이 예외는 Spring.Core.IO AssemblyResource 생성자에서 발생합니다. NamespaceParser ( 네임 스페이스 = "HTTP : // 내 사이트/스키마/캐시", SchemaLocationAssemblyHint = 대해서 typeof (CacheNamespaceParser), 의 schemaLocation = "/cache.xsd" ) 이 속성과 관련이? – iasksillyquestions

+0

resourceName이 위의 생성자에 조립 통과 : // 웹 애플리케이션을, 버전 = 1.0.0.0, 문화 = 중립, PublicKeyToken = null이/cache.xsd "\t 문자열 내가 자원 이름, 어셈블리 이름을 갖고있는 것 같다 하지만 네임 스페이스 이름 ... – iasksillyquestions

답변

0

그것의 속성 매개 변수의 schemaLocation과 같이 무슨 잘못

어떤 아이디어가 잘못된 것입니다. 다음과 같이 시도하십시오.

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

cache.xsd가 어셈블리의 루트에 있으면 작동해야합니다.