IIS的WCF服务主机,spring.net scope =“request”

时间:2011-10-20 07:47:23

标签: c# wcf iis spring.net

我想在我的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)));
}

我在WebContextHandler添加了web.config以启用范围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>

因为我在窗口7,框架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服务的常见模式。

修改

我试过

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

正如评论中所建议的那样,它不起作用。

1 个答案:

答案 0 :(得分:1)

我在Spring源代码中看了一个机器人,如果我添加

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

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

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