EPiServer CMSで動作するカスタムミドルウェアを作成する必要があります。私はApplication_Start()を削除してStartUp.Configuration()からすべてを実行したいと思います。Owin Startup.ConfigurationからGlobal.asaxを削除してEPiServer CMS MVCを実行
これは、コンフィグレーション内のメソッドを呼び出すことによってルートを登録し、必要な起動タスクをすべて行うことができるため、 ()。
しかし、ルートを登録し、などのためEPiServerのメソッドが保護されている(と私は必要なもののすべてを知りません).I起動してアプリを実行することにより、次のような利点が予想される代わりに、Global.asaxの
- 初期化モジュールが実行されたときに私がコントロールできるならば、私は私のカスタムミドルウェア
にサービスの場所(のServiceLocator)を使用することができます私は、同じアプリのための2つのアプリケーションの開始点を持っていないことにより、複雑さを減らす
これらは両方とも重要であり、私に。私は絶対にしなければ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リスナを持つInitializationModuleがあります。 – user3702750