WCF服务主机由IIS提供,spring.net scope=“请求”

本文关键字:scope net 请求 spring 主机 服务 IIS 提供 WCF | 更新日期: 2023-09-27 18:12:03

我想在我的xml配置中启用scope="request"属性:

<object id="IDataAccess" type="Dal.DataAccess, Dal" scope="request">

我的WCF服务托管在IIS上,我使用RouteTableServiceHostFactory来创建我的服务:

static void Application_Start(object sender, EventArgs e)
{
    RouteTable.Routes.Add(new ServiceRoute("url", serviceHostFactory, typeof(MyService)));
}

我在web.config中添加了WebContextHandler,以启用范围requestsession,如这里所述http://www.springframework.net/doc-latest/reference/html/web.htm(第22.3.1节)

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

httpModules的事情:

 <system.web>
    <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>
</system.web>

因为我使用的是windows 7, framework Net 4.0,所以我还添加了:

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

我都做了。它不起作用,我还有:

Resource handler for the 'web' protocol is not defined.

调用:

SpringContext = (IApplicationContext)ConfigurationManager.GetSection("spring/context");

我现在不知道该怎么办,能不能有人从Spring.net社区帮助我。这看起来不像我试图做一些棘手或黑客的事情。在IIS中托管WCF服务是一种常见模式。

编辑:

I tried with

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

WCF服务主机由IIS提供,spring.net scope=“请求”

我查看了一下spring源代码,如果我添加

ResourceHandlerRegistry.RegisterResourceHandler("web", typeof (WebResource));

在我的Application_Start方法中,在获得ContextConfiguration之前,它完成了这项工作。我也不知道为什么。我认为这是当前WebSupportModule的一个bug。

非常奇怪,因为这是在WebSupportModule的静态构造函数中调用的。我尝试为Spring启用日志记录,但是日志文件被创建了,但是保持空:/它可以帮助我更多地理解。