spring-net icon indicating copy to clipboard operation
spring-net copied to clipboard

Does Spring.NET support IIS Integrated Pipeline Mode?

Open Exagram opened this issue 4 years ago • 0 comments

Issue: I switched from Classic to Integrated and Spring.NET fails with object creation.

Context: I debugged my application and my code is failing inside your library at a ConfigurationManager.GetSection() call.

Note: This was working well in IIS Classic Mode.

The Web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <!-- Config Section -->
  <configSections>
    <sectionGroup name="common">
      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
    </sectionGroup>
    <sectionGroup name="spring">
      <section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web" />
      <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
    </sectionGroup>
  </configSections>
...
    <spring>
      <context>
        <resource uri="config://spring/objects" />
        <objects xmlns="http://www.springframework.net">...</objects>
      </context>
    </spring>

The code that triggers the crash:

appContext = Spring.Context.Support.ContextRegistry.GetContext();

The stack trace on Application_Start:

{"Error creating context 'spring.root': Request is not available in this context (C:\\webapp\\web.config line 287)"}{System.Configuration.ConfigurationErrorsException}

{"Request is not available in this context"}

   at System.Configuration.BaseConfigurationRecord.EvaluateOne(String[] keys, SectionInput input, Boolean isTrusted, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult)
   at System.Configuration.BaseConfigurationRecord.Evaluate(FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult, Boolean getLkg, Boolean getRuntimeObject, Object& result, Object& resultRuntimeObject)
   at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
   at System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
   at System.Web.HttpContext.GetSection(String sectionName)
   at System.Web.Configuration.HttpConfigurationSystem.GetSection(String sectionName)
   at System.Web.Configuration.HttpConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String configKey)
   at System.Configuration.ConfigurationManager.GetSection(String sectionName)
   at Spring.Util.ConfigurationUtils.GetSection(String sectionName) in c:\_prj\spring-net\src\Spring\Spring.Core\Util\ConfigurationUtils.cs:line 68
   at Spring.Context.Support.ContextRegistry.InitializeContextIfNeeded() in c:\_prj\spring-net\src\Spring\Spring.Core\Context\Support\ContextRegistry.cs:line 388
   at Spring.Context.Support.ContextRegistry.GetContext() in c:\_prj\spring-net\src\Spring\Spring.Core\Context\Support\ContextRegistry.cs:line 252
   at WebApp.Global.LoadSpringContainer() in C:\WebApp\Global.asax.cs:line 107
   at WebApp.Global.Application_Start(Object sender, EventArgs e) in C:\WebApp\Global.asax.cs:line 41

   at Spring.Util.VirtualEnvironment.HttpRuntimeEnvironment.RewriteContext..ctor(String virtualDirectory, Boolean rebaseClientPath) in c:\_prj\spring-net\src\Spring\Spring.Web\Util\VirtualEnvironment.cs:line 254
   at Spring.Util.VirtualEnvironment.HttpRuntimeEnvironment.RewritePath(String virtualDirectory, Boolean rebaseClientPath) in c:\_prj\spring-net\src\Spring\Spring.Web\Util\VirtualEnvironment.cs:line 341
   at Spring.Util.VirtualEnvironment.RewritePath(String newVirtualPath, Boolean rebaseClientPath) in c:\_prj\spring-net\src\Spring\Spring.Web\Util\VirtualEnvironment.cs:line 467
   at Spring.Util.HttpContextSwitch..ctor(String virtualDirectory) in c:\_prj\spring-net\src\Spring\Spring.Web\Util\HttpContextSwitch.cs:line 87
   at Spring.Context.Support.WebContextHandler.InstantiateContext(IApplicationContext parent, Object configContext, String contextName, Type contextType, Boolean caseSensitive, IList`1 resources) in c:\_prj\spring-net\src\Spring\Spring.Web\Context\Support\WebContextHandler.cs:line 121
   at Spring.Context.Support.ContextHandler.Create(Object parent, Object configContext, XmlNode section) in c:\_prj\spring-net\src\Spring\Spring.Core\Context\Support\ContextHandler.cs:line 288


Exagram avatar Nov 18 '20 01:11 Exagram