EPiServer CMS에서 작동하도록 사용자 정의 미들웨어를 작성해야합니다. 내가 Application_Start()를 제거하고 StartUp.Configuration()에서 모든 것을 실행하고 싶습니다.Owin Startup에서 Global.asax를 제거하고 EPiServer CMS MVC를 실행하십시오. 구성
이것은 기본 MVC 4 응용 프로그램에서 가능합니다. 경로를 등록하고 Configuration 내의 메소드를 호출하여 필요한 모든 시작 작업을 수행 할 수 있기 때문입니다.().
그러나 경로를 등록 등을위한 EPiServer의 방법은 보호 (내가 필요한 것들 모두를 모르는) .I이
-
을 시작으로 응용 프로그램을 실행하는 대신 Global.asax에 의해 다음과 같은 이점을 예상
- 내가 초기화 모듈이 실행되면, 그때는
내가 같은 응용 프로그램
이 모두 중요한 두 응용 프로그램의 시작 지점을 가지고 있지 복잡성을 감소 내 사용자 지정 미들웨어에서 서비스 위치 (ServiceLocator)를 사용하여 제어 할 수있는 경우 나에게. 내가 절대적으로해야하지 않는 한 Application_Start()를 사용하지 않는 것을 선호합니다.
내 연구에 따르면 EPiServer.ServiceAPi를 사용하여이 작업을 수행 할 수있는 잠재적 인 방법이 하나 밝혀졌지만 ServiceApi의 핵심 용도는 내 앱에서 사용되지 않습니다. 오윈 (OWIN) 호환성을 위해 순수하게 그것을 가져 오는 것은 낭비입니다. 또한 그것은 내 애플 리케이션이 그것을 필요로하지 않기 때문에 내가 현재 채우고 싶지 않은 OAuth 공급자 의존성을 가지고있다. 누구든지 성공적으로이 일을 했습니까? 누구든지지도를 제공 할 수 있습니까? 시간 내 주셔서 감사 드리며 필요한 경우 제 질문에 대한 설명을 제공해 드리겠습니다. 감사합니다
다음은 코드 단편입니다. 이 첫 번째 네임 스페이스에 유의하십시오 - 일부 기능을 상속 한 다음 일반적인 ASP.NET MVC 작업을 실행하는 것 같습니다.
public class EPiServerApplication : EPiServer.Global { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); var formatters = GlobalConfiguration.Configuration.Formatters; var jsonFormatter = formatters.JsonFormatter; var settings = jsonFormatter.SerializerSettings; settings.ContractResolver = new CamelCasePropertyNamesContractResolver(); GlobalConfiguration.Configuration.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } }
public class Startup
{
public void Configuration(IAppBuilder app)
{
AreaRegistration.RegisterAllAreas();
new EPiServer.ServiceApi.Startup().Configuration(app);
app.Use(typeof(CustomMiddleware));
}
}
특히 Episerver API를 사용할 수 있어야하는 경우 Episerver 시작시 실행되는 항목에 대해 'InitializationModule'을 살펴 보는 것이 좋습니다. 그렇지 않으면 OWIN 시작 클래스와 Global.asax를 동시에 사용할 수 있습니다. –
@TedNyberg 이것은 EPiServer에서 올바른 것으로 밝혀졌습니다. 이것을 몇 가지 추가 답변으로 게시하면 받아 들일 것입니다. 특히 OWIN을 버리고 InitializationModules 만 사용하는 것이 좋습니다. 파이프 라인이 다르긴하지만 OWIN 기능을 근사화하는 데 사용할 수있는 HTTP Listener가있는 InitializationModule이 있습니다. – user3702750