Spring. NET 기반 MVC 프로그램 발표 시 가상 경로 오류 해결 방안

2942 단어 spring
spring. NET 1.3 이상 버 전 을 사용 할 때 웹 프로그램 이 루트 디 렉 터 리 에 배치 되 지 않 으 면 가상 경로 의 오류 가 발생 할 수 있 습 니 다.오 류 는 다음 과 같 습 니 다:
가상 경로 '/ saas 2 / currentcontext. dummy' 가 다른 프로그램 에 매 핑 되 는 것 은 허용 되 지 않 습 니 다.
 
오랫동안 힘 을 들 였 지만 문 제 를 해결 하지 못 하고 spring. NET 포럼 에 가서 야 문 제 를 해결 하 는 방안 을 찾 았 습 니 다. 방안 은 다음 과 같 습 니 다.
<spring>
    <context name="saas2" type="Spring.Context.Support.WebApplicationContext, Spring.Web">
      <resource uri="file://~/Config/controller.xml"/>
      <!--
      <resource uri="assembly://saas/saas.Config/Controller.xml"/>
      -->
      <resource uri="file://~//Dao_Saas.xml"/>
      <resource uri="assembly://saas.util/saas.Util.Config/QueryService.xml"/>
      <resource uri="assembly://saas.Service/saas.Config/Service.xml"/>
    </context>
  </spring>

사실은 Context 탭 에 가상 경 로 를 적 는 것 입 니 다.
 서로 다른 가상 디 렉 터 리 에 발표 되 는 것 이 아니 라 자동 으로 식별 하려 면 ContextHandler 류 를 직접 써 야 합 니 다. 다음 과 같 습 니 다.
using System;
using System.Xml;
using System.Web;
using System.Reflection;
using Spring.Context.Support;
using Common.Logging;

namespace Spring.Context.Support
{
    public class AutoNamedContextHandler : ContextHandler
    {
        protected ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

        protected override string GetContextName(object configContext, XmlElement contextElement)
        {
            string res = base.GetContextName(configContext, contextElement);
            if (string.IsNullOrEmpty(res) == false)
            {
                logger.Info("Using declared context name: " + res);
                return res;
            }

            string appPath = HttpContext.Current.Request.ApplicationPath;
            logger.Info("Using discovered context name: " + appPath);
            return appPath;
        }
    }
}

그리고 이 설정 을 웹. config 설정 파일 의 spring 절 에 설정 하면 됩 니 다.이렇게 하면 자 유 롭 게 발표 할 수 있다.
<?xml version="1.0"?>
<configuration>
  <configSections>
    <sectionGroup name="spring">
      <section name="context" type="Spring.Context.Support.AutoNamedContextHandler, Tools" />
    </sectionGroup>
  </configSections>
  <spring>
    <context type="Spring.Context.Support.WebApplicationContext, Spring.Web">
      <!-- ... -->
    </context>
  </spring>
</configuration>

  
 
 
 

좋은 웹페이지 즐겨찾기