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上,我使用RouteTable
和ServiceHostFactory
来创建我的服务:
static void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.Add(new ServiceRoute("url", serviceHostFactory, typeof(MyService)));
}
我在web.config
中添加了WebContextHandler
,以启用范围request
和session
,如这里所述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"/>
我查看了一下spring源代码,如果我添加
ResourceHandlerRegistry.RegisterResourceHandler("web", typeof (WebResource));
在我的Application_Start
方法中,在获得ContextConfiguration之前,它完成了这项工作。我也不知道为什么。我认为这是当前WebSupportModule
的一个bug。
非常奇怪,因为这是在WebSupportModule
的静态构造函数中调用的。我尝试为Spring启用日志记录,但是日志文件被创建了,但是保持空:/它可以帮助我更多地理解。