Spring.NET XML配置问题

时间:2011-02-07 17:04:15

标签: c# spring.net xml-configuration

我正在尝试从XML文件加载Spring.NET上下文。我有以下代码:

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;"/>

1 个答案:

答案 0 :(得分:0)

听起来像'众所周知的命名空间解析器'的发现和注册出了问题。要对此进行故障排除,请尝试在XML文件中声明名称空间别名,如...

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

...然后看看它是否正常工作。您使用的是什么版本的Spring.NET?它是否与您过去的项目中使用的版本相同,其中相同的命名空间别名会自动发生 - ?