4

開発用 PC (VS2013 および Window 8.1 Enterprise x64) で完全に動作する Web ロールがありますが、それを Azure に発行すると失敗し、次の例外が発生します。

[InvalidProgramException: Common Language Runtime detected an invalid program.]
   Castle.Core.ComponentModel.get_Dependencies() +0
   Castle.Core.ComponentModel.AddConstructor(ConstructorCandidate constructor) +264
   Castle.MicroKernel.ModelBuilder.Inspectors.ConstructorDependenciesModelInspector.ProcessModel(IKernel kernel, ComponentModel model) +535
   Castle.MicroKernel.ModelBuilder.<>c__DisplayClass6.<BuildModel>b__4(IContributeComponentModelConstruction c) +137
   System.Collections.Generic.List`1.ForEach(Action`1 action) +95
   Castle.MicroKernel.ModelBuilder.DefaultComponentModelBuilder.BuildModel(IComponentModelDescriptor[] customContributors) +404
   Castle.MicroKernel.Registration.ComponentRegistration`1.Castle.MicroKernel.Registration.IRegistration.Register(IKernelInternal kernel) +283
   Castle.MicroKernel.DefaultKernel.Register(IRegistration[] registrations) +198
   Castle.Facilities.TypedFactory.TypedFactoryFacility.InitFacility() +745
   Castle.Facilities.TypedFactory.TypedFactoryFacility.Init() +78
   Castle.MicroKernel.Facilities.AbstractFacility.Castle.MicroKernel.IFacility.Init(IKernel kernel, IConfiguration facilityConfig) +165
   Castle.MicroKernel.DefaultKernel.AddFacility(String key, IFacility facility) +507
   Castle.MicroKernel.DefaultKernel.AddFacility(IFacility facility) +213
   Castle.MicroKernel.DefaultKernel.AddFacility() +167
   Castle.Windsor.WindsorContainer.AddFacility() +138
   PingTree.Journey.WebRole.IoCConfig.RegisterComponents() in d:\Users\Ben\OneDrive\Source\PingTree\JourneyWebRole\PingTree.Journey.WebRole\App_Start\IoCConfig.cs:19
   PingTree.Journey.WebRole.MvcApplication.Application_Start() in d:\Users\Ben\OneDrive\Source\PingTree\JourneyWebRole\PingTree.Journey.WebRole\Global.asax.cs:15

[HttpException (0x80004005): Common Language Runtime detected an invalid program.]
   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +475
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +214
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +203
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +313
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +250

[HttpException (0x80004005): Common Language Runtime detected an invalid program.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +452
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +99
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +1017

RegisterComponents メソッドのコードは次のとおりです。

public static void RegisterComponents()
{
    var assemblyPath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "bin");

    var windsorContainer = new WindsorContainer();
    windsorContainer.AddFacility<TypedFactoryFacility>();
    windsorContainer.Install(FromAssembly.InDirectory(new AssemblyFilter(assemblyPath)));
    windsorContainer.Register(Classes.FromThisAssembly().BasedOn<IController>().LifestyleTransient());

    ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(windsorContainer));
}

windsorContainer.AddFacility メソッド呼び出しで失敗します。

NuGet を使用してプロジェクトから Castle.Windsor を削除し、ローカル コピーを削除して、Windsor を再インストールしました。ここでの別の回答は、ローカルの一時 ASP.Net ファイルを削除することを提案しました。私もそれを試しました。しかし、公開するたびに同じ問題が発生します。

更新 1 ボイラー プレートの azure Web ロール テンプレートと次のコードで問題を再現できました。

    protected void Application_Start()
    {
        var windsorContainer = new WindsorContainer();
        windsorContainer.AddFacility<TypedFactoryFacility>();
    }

Castle Windsor 3.3 を azure で問題なく使用している人はいますか?

4

3 に答える 3

4

より具体的な答えは、IntelliTrace に問題があるようだということです。無効なプログラムの例外をスローする展開では、IntelliTrace が有効になっていました。IntelliTrace を無効にしてソリューションを再展開すると、ロールが初期化され、正しく開始されます。

于 2014-07-14T21:52:31.477 に答える
0

同じ問題があり、ウィンザー城 3.3 も使用しています。私たちも Azure パブリッシュ プロファイルから intelliTrace を削除し、魔法のようにこの問題を解決しました。

于 2014-08-29T15:51:25.553 に答える