我想在我的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)));
}
我在WebContextHandler
添加了web.config
以启用范围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>
因为我在窗口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"/>
正如评论中所建议的那样,它不起作用。
答案 0 :(得分:1)
我在Spring源代码中看了一个机器人,如果我添加
ResourceHandlerRegistry.RegisterResourceHandler("web", typeof (WebResource));
在我的Application_Start
方法中,在获得ContextConfiguration之前,它完成了这项工作。我不知道为什么。我认为这是当前WebSupportModule
中的一个错误。
这很奇怪,因为这是在WebSupportModule
的静态构造函数中调用的。我尝试为Spring启用日志记录,但创建了日志文件,但保持空白:/它可以帮助我理解更多。