无法从ContextRegistry.GetContext()获取WebApplicationContext对象:未定义“web”协议的资源处理程序

时间:2011-04-04 07:16:14

标签: c# asp.net dependency-injection webforms spring.net

我一直忙于在web表单项目下配置我的web.config文件,以便获取WebApplicationContext的实例(在Global.asax中),然后能够使用scope =“application | session | request”

<sectionGroup name="spring">
    <section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
    <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
</sectionGroup>

<spring>
    <context type="Spring.Context.Support.WebApplicationContext, Spring.Web">
        <resource uri="~/Configuration/Spring.xml" />
    </context>
</spring>

<httpHandlers>
    <add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
</httpHandlers>

<httpModules>
    <add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
</httpModules>

然后我尝试将WebApplicationContext添加到我的Application对象,以便在任何.aspx页面上进行cosume;

protected void Application_Start(object sender, EventArgs e)
{
    //Exception happens on next line!
    Application.Add("ContainerID", ContextRegistry.GetContext());
}

我得到的例外是;

"Error creating context 'spring.root': Resource handler for the 'web' protocol is not defined. Spring.NET"

我花了一些时间在Google上搜索,但没有成功。我在Spring.NET文档中找到了; “在Spring提供的Web应用程序中 WebApplicationContext实现,通过添加自定义HTTP模块和HTTP进行配置 Web.config文件的处理程序。有关详细信息,请参阅“Web配置”一节。“但它绝不会发生。

拜托,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

未在Application_Start初始化spring.net容器。

和btw,为什么要在Application bucker中添加容器?这听起来像是反模式......

答案 1 :(得分:0)

将其添加到system.webServer配置节点:

<modules runAllManagedModulesForAllRequests="true">
  <add name="Spring" preCondition="integratedMode" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
</modules>   

如果在IIS7中使用integratedMode