Мне необходимо написать какое-то специальное промежуточное программное обеспечение для работы с EPMServer CMS. Я хотел бы удалить Application_Start() и запустить все из StartUp.Configuration()Удалите Global.asax и запустите EPiServer CMS MVC из Owin Startup.Configuration
Это кажется возможным с помощью приложения MVC 4 базовой линии, поскольку вы можете регистрировать маршруты и выполнять все необходимые задачи запуска, вызывая методы в Конфигурации().
Однако методы EPiServer для регистрации маршрутов и т.д. защищены (и я не знаю, все необходимые из них) .Я ожидают следующие преимущества, запустив приложение с запуском вместо Global.asax
- Если я могу контролировать, когда модули инициализации побежала, то я могу использовать расположение службы (ServiceLocator) в моем пользовательском промежуточном
я уменьшить сложность, не имея два запускаемых точек для одного приложения
Они являются важными мне. Я бы предпочел не использовать Application_Start(), если я абсолютно не обязан.
Мое исследование выявило один из возможных способов сделать это с помощью EPiServer.ServiceAPi - но основная цель ServiceApi не будет использоваться в моем приложении. Кажется расточительным приводить его исключительно для совместимости с OWIN. Также у него есть зависимость провайдера OAuth, которую я не хочу заполнять в это время, поскольку мое приложение не требует этого. Кто-нибудь сделал это успешно? Может ли кто-нибудь предложить руководство? Я ценю ваше время, и я рад предоставить разъяснения по моему вопросу, когда это необходимо. Thanks
Ниже приведены фрагменты кода: Обратите внимание на пространство имен на этом первом - кажется, наследует некоторые функции, а затем запускает типичный материал 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 } ); } }
Здесь мы имеем типичную конфигурацию Owin запуска. Я бы хотел, чтобы приведенное выше было удалено, и используйте только ниже. Это можно сделать?
public class Startup
{
public void Configuration(IAppBuilder app)
{
AreaRegistration.RegisterAllAreas();
new EPiServer.ServiceApi.Startup().Configuration(app);
app.Use(typeof(CustomMiddleware));
}
}
Я бы порекомендовал искать «InitializationModule» для запуска приложений Episerver, особенно если вам нужны API-интерфейсы Episerver. В противном случае вы можете одновременно использовать как класс запуска OWIN, так и Global.asax. –
@TedNyberg Это оказывается правильным для EPiServer. Если вы опубликуете это как ответ с несколькими дополнительными деталями, я приму это. В частности, имеет смысл выбросить OWIN и просто использовать InitializationModules. Существует модуль InitializationModule с HTTP-прослушивателем, который может использоваться для аппроксимации функциональности OWIN - хотя конвейер отличается. – user3702750