Назад | Перейти на главную страницу

Ошибка при развертывании приложения mvc2 в IIS

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

  1. Пользователь нажимает ссылку для отображения веб-формы.
  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        }

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

Вы дважды проверяли, развернута ли правильная версия файлов просмотра? Может быть, они были скопированы, но не обновлены на рабочем сервере после того, как вы внесли некоторые изменения?

Еще один совет: связано ли это с какими-либо проблемами с сессией или файлами cookie? У вас есть несколько вопросов и несколько предложений:

  • Вы можете воспроизвести это?
  • Бывает ли это с разными браузерами / версиями?
  • Используйте HTTP-анализатор, например Скрипач для отладки информации (формы, заголовков http и т. д.), передаваемой от клиента на сервер

В вашем случае я предполагаю, что это как-то связано с режимом аутентификации. Возможно, в вашей интрасети вы автоматически аутентифицируетесь, потому что вы все являетесь пользователями домена Windows. Но я предполагаю, что ваш производственный сервер находится за пределами вашего домена Windows, поэтому эта конфигурация не применяется.