3

ASP.NetMVC3.0フレームワークを使用してアプリケーションを開発しています。実行時にオブジェクトを注入するために構造マップを使用しています。この目的のために、コンストラクターインジェクションを使用しています。カスタムコントローラーファクトリを作成しました。コントローラーの作成は、を介してこのファクトリに委任されreturn (Controller)ObjectFactory.GetInstance(controllerType);ます。インターフェイスを具象クラスにマッピングすることにより、DSLを使用して定義を定義しました。

アプリケーションがVisualStudio開発サーバーで実行されている場合、すべてが正常に機能しています。ただし、同じアプリケーションがIIS 7.0に展開されている場合、実行時にオブジェクトを作成しているときに207エラーがスローされます。

IISの設定を更新する必要があるかどうか、またはこの問題をデバッグする手順を支援する必要があるかどうかを誰かが助けてくれますか?この問題については、以下のスタックトレースを見つけてください

ExceptionStructureMap Exception Code:  
207 Internal exception while creating Instance '83248ea8-b195-4166-8a7d-678e9a677c9f' of PluginType Payrs.Web.Controllers.PaymentRequestController.  
Check the inner exception for more details.Stack Trace :   
 at StructureMap.Pipeline.ConstructorInstance.Build(Type pluginType, BuildSession session, IInstanceBuilder builder)  
    at StructureMap.Pipeline.ConstructorInstance.build(Type pluginType, BuildSession session)    
     at StructureMap.Pipeline.Instance.createRawObject(Type pluginType, BuildSession session)    
      at StructureMap.Pipeline.Instance.Build(Type pluginType, BuildSession session)    
       at StructureMap.Pipeline.ObjectBuilder.Resolve(Type pluginType, Instance instance, BuildSession session)   
         at StructureMap.BuildSession.CreateInstance(Type pluginType, Instance instance)    
          at StructureMap.BuildSession.<>c__DisplayClass3.<.ctor>b__1()    
           at StructureMap.BuildSession.CreateInstance(Type pluginType)    
            at Payrs.Web.Infrastructure.PayrsControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType)  


             **Inner Exception**    

              at Payrs.Web.Controllers.PaymentRequestController..ctor(IPaymentService paymentRequestService, IFundingService fundingService)   
                at lambda_method(Closure , IArguments )     
                at StructureMap.Construction.BuilderCompiler.FuncCompiler`1.<>c__DisplayClass2.<CreateBuilder>b__0(IArguments args)    
                 at StructureMap.Construction.InstanceBuilder.BuildInstance(IArguments args)    
                  at StructureMap.Pipeline.ConstructorInstance.Build(Type pluginType, BuildSession session, IInstanceBuilder builder)
4

1 に答える 1

5

構造マップコードとWebサーバーの監視を通じてトラブルシューティングを行った後、問題を理解することができました。

この場合、現在のアプリドメインを折りたたみ、リクエストを処理するための新しいアプリドメインを作成するという、手に負えない例外が発生しています。構造マップの構成全体がアプリドメインレベルで行われるため、コンテナー定義が無効になります。これが、構造マップがコンストラクターにオブジェクトを挿入できない理由です。

Elmahは、問題を修正し、例外を処理することでこのエラーを回避する、処理されていない例外を特定するのに役立ちました。

于 2012-12-27T05:48:13.023 に答える