2011-02-07 2 views
1

XML 파일에서 Spring.NET 컨텍스트를로드하려고합니다. 나는 다음과 같은 예외가 발생하고 있습니다Spring.NET XML 구성 문제

public class ApplicationContextFactory 
{ 
    private static IApplicationContext _context; 
    public static IApplicationContext GetContext() 
    { 
     if (_context == null) 
     { 
      try 
      { 
       string data = new StreamReader(
         Assembly.GetExecutingAssembly(). 
         GetManifestResourceStream("Nmspace.Fldr.spring-config.xml")) 
         .ReadToEnd(); 
       using (var temp = File.CreateText("ctx.xml")) 
        temp.WriteLine(data); 
       _context = new XmlApplicationContext("ctx.xml"); 
       // _context = new XmlApplicationContext(
        //"assembly://DataLoader/DataLoader/Config.spring-config.xml"); 
      } 
      catch (Exception e) 
      { 
       string error = e.Message; 
      } 
     } 
     return _context; 
    } 
} 

: 파일 [D:\correct\path\to\ctx.xml]에서 XML 문서의

라인 (25) 스키마를 위반 나는 다음과 같은 코드가 있습니다. 'http://www.springframework.net/database:provider' 요소가 선언되지 않았습니다.

어셈블리에서 직접 가져 오는 경우에도 동일한 오류가 발생합니다. (주석 처리 된 행)

정말 이상한 점은 새 프로젝트를 시작하고 새 프로젝트에서 구성을 사용하려고 할 때까지 아무런 문제가 없다는 것입니다. (이 코드 및 구성 파일은 기존 프로젝트에 달 동안 일했으며, 여전히 수행하고있다.)

편집 :

XMLNS 선언 :

<objects 
    xmlns="http://www.springframework.net" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:tx="http://www.springframework.net/tx" 
    xmlns:db="http://www.springframework.net/database" 
    xmlns:aop="http://www.springframework.net/aop" 
    xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/schema/objects/spring-objects.xsd 
     http://www.springframework.net/schema/tx http://www.springframework.net/schema/tx/spring-tx-1.1.xsd 
     http://www.springframework.net/schema/db http://www.springframework.net/schema/db/spring-database.xsd 
     http://www.springframework.net/aop http://www.springframework.net/schema/aop/spring-aop-1.1.xsd" 
> 

문제 선 (25) :

<db:provider 
    id="localDbProvider" 
    provider="OracleClient-2.0" 
    connectionString= 
     "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME = xe))); User Id=cmdb; Password=password;"/> 
+0

'ctx.xml '의 25 행을 추가 할 수 있습니까? – Marijn

+0

@Marijn, 추가. 희망이 도움이됩니다. – jjnguy

+0

온라인 버전을 참조하는 대신 로컬 스키마를 사용해 보셨습니까? [docs] (http://www.springframework.net/doc-latest/reference/html/vsnet.html#vsnet-config-section)에 설명되어있는 방법. – Marijn

답변

0

'well-known-namespace-parsers'검색 및 등록과 관련하여 문제가 발생했습니다. 이 문제를 해결하려면, ...와 같이 XML 파일 자체의 네임 스페이스 별칭을 선언

<objects xmlns='http://www.springframework.net' 
    xmlns:database="http://www.springframework.net/database"> 
    ... 
</objects> 

을 시도 ... 그리고 제대로 작동하는 경우 다음을 참조하십시오. 사용중인 Spring.NET의 버전은 무엇입니까? 그리고이 동일한 네임 스페이스 앨리어싱이 자동으로 발생하는 과거 프로젝트에서 사용중인 것과 동일한 버전입니까?

+0

나는 현재 선언 한 '네임 스페이스 별칭'을 포함하도록 질문을 편집했습니다. 이것은 Spring.Net 2입니다. 내가 붙여 넣은 코드 블록은 이전에 사용했던 코드 블록과 완전히 똑같습니다. 나는 (본질적으로) 3 개의 프로젝트와 함께 1 개의 솔루션을 사용하고있다. 데이터 액세스 프로젝트 (위에서 볼 수있는 코드 포함), 데이터 액세스 프로젝트를 사용하는 이전 프로젝트 및 데이터 액세스 프로젝트를 사용하기로되어있는 새 프로젝트 – jjnguy

+0

(도움을 주셔서 감사합니다) – jjnguy