2011-01-28 19 views
0

インターネットにプロダクション環境で浮動しているIIS上に、MVC2ベースのアプリケーションをデプロイしています。エラーが発生し、これはそれを調達するプロセスです。IISにmvc2アプリケーションをデプロイするときにエラーが発生する

  1. ユーザーがWebフォームに
  2. ユーザー挿入データを表示するには、リンクをクリックします。
  3. ユーザーがフォームを送信します。
  4. アプリケーションがエラーを示します。そのトレースは、オブジェクトの参照がインスタンスに設定されていないことを示しています。明らかに、MVCのエンジンは、モデルに関するHTTP POST要求データを失います。そのため、アクションの実行時に指定されていない時間に、システムはアクションのパラメータにnullを割り当てます。

テスト環境では、イントラネットでこの問題は発生していませんでした。ここで

は誤りです:

// Error 
Exception Error: Object reference not set to an instance of an object. 
Exception Source: MagaARPIU 
Exception Data: System.Collections.ListDictionaryInternal 
Exception Trace: at MagaARPIU.Areas.GestionComercial.Controllers 
    .ProspectacionController.IngresarEmpresa(InfoEmpresa modelo) 
in C:\Desarrollo\calvarez\codigo\Gacela ARP - Publicaciones\Gacela ARP\Maga\MagaARPIU\Areas\GestionComercial\Controllers\ProspectacionController.cs:line 151 
at lambda_method(Closure , ControllerBase , Object[]) 
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) 
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) 
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a() 
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) 
at System.Web.Mvc.ControllerActionInvoker 
    .InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) 
at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) 

// -- ProspectacionController.cs 

105  [RolAuthorizationAttribute] 
106  public ActionResult IngresarEmpresa() 
107  { 
108   var modelo = new InfoEmpresa(); 
       ... 
113   modelo.DatosIdentificacion = new DatosIdentificacion(); 
       ... 
137   return View("IngresarEmpresa1", modelo); 
       ... 
139   } 

145  [HttpPost] 
146  [RolAuthorizationAttribute] 
147  public ActionResult IngresarEmpresa(InfoEmpresa modelo) 
148  { 
       ... 
151   if (!modelo.DatosIdentificacion.Completo) 
152   { 
       ... 
179   } 
       ... 
305  } 

あなたは何が起こっているか知っているとどのようにこの問題を解決することですか?

+0

asp.netエラーメッセージをコピーして貼り付けてください。 – rcravens

+0

私はエラーのトレースといくつかのコードを投稿しました.... – JPCF

+0

行151にブレークポイントを置きます。 'modelo'オブジェクトと 'DatosIdentificacion'プロパティを見てください。私はあなたがそれらの2つの1つがヌルであることがわかると信じています。 – rcravens

答えて

1

あなたが提供した情報からのPOSTアクションでモデルがnullである理由を言うのは非常に難しいです。あなたはおそらく、リクエストパラメータが送信されてトレースし、見るであろう、あなたのコントローラのアクション内のいくつかのログを入れたい

[HttpPost] 
[RolAuthorizationAttribute] 
public ActionResult IngresarEmpresa(InfoEmpresa modelo) 
{ 
    if (ModelState.IsValid) 
    { 
     // The validation failed => redisplay the view so that the user 
     // can fix the errors: 
     return View(modelo); 
    } 
    // at this stage validation passed => do something with the model 
    ... 
} 

限り、懸念しているあなたの問題をデバッグするよう:あなたのコードではなく、このようには見えませんなぜ私は疑問に思います欠けているもの

+0

これは問題です...開発とテスト環境では、スタックトレースを見てデバッグすることができます。そして、これらの環境はうまくいく。問題は本番環境で発生し、そこではデバッグできません。私たちは、IIS上のセッション管理に関連していると考えています。 – JPCF

+0

@ JPCF、例外の詳細を追跡するために、選択したログフレームワークを使用することを提案しました。ロギングフレームワークを使用していませんか?プロダクションでエラーをトレースしていませんか?あなたはすべきです。 'log4net'は、テキストファイル、XMLファイル、SQLデータベースなど、さまざまなソースをトレースすることを可能にするロギングフレームワークの一般的な選択です。サードパーティのロギングフレームワークを使用したくない場合は、 -in .NETフレームワーク自体の機能を追跡します。 –

+0

ロガーは同じメッセージを表示します。私たちはWindowsイベントビューアを使用しています。 – JPCF

関連する問題