Ошибка при развертывании приложения mvc2 в IIS - PullRequest
0 голосов
/ 28 января 2011

Мы развертываем приложение на основе MVC2 на IIS в производственной среде, плавающей в Интернете.Возникает ошибка, и это процесс ее возникновения:

  1. Пользователь нажимает на ссылку для отображения веб-формы
  2. Пользователь вставляет данные.
  3. Пользователь отправляет форму.
  4. Приложение показывает ошибку.Его след показывает, что ссылка на объект не установлена ​​на экземпляр.По-видимому, движок MVC теряет данные HTTP-запроса POST, относящиеся к модели, поэтому система назначает нулевой параметр для действий в неуказанный момент времени выполнения действия.

В среде тестирования в нашей интрасети эта проблема никогда не возникала.

Вот ошибка:

// 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        }

Вы знаете, что происходити как решить эту проблему?

1 Ответ

1 голос
/ 29 января 2011

Очень трудно сказать, почему ваша модель не указана в действии POST из предоставленной вами информации. Мне просто интересно, почему ваш код не выглядит так:

[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
    ...
}

Что касается отладки вашей проблемы, вы, вероятно, захотите поместить в лог вашего контроллера некоторые действия, которые бы отслеживали отправляемые параметры запроса и видели, чего не хватает.

...