在 IIS 中部署 mvc2 应用程序时出错

在 IIS 中部署 mvc2 应用程序时出错

我们正在 Internet 上的生产环境中的 IIS 上部署基于 MVC2 的应用程序。发生错误,以下是引发该错误的过程:

  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        }

您知道发生了什么事以及如何解决这个问题吗?

答案1

您是否仔细检查了是否部署了正确版本的 View 文件?也许在您进行了一些更改后,它们已被复制但未在生产服务器上刷新?

另一个提示:它是否与某些会话或 cookie 问题有关?您有一些问题要问,并有一些建议:

  • 你能重现它吗?
  • 使用不同的浏览器/版本时会发生这种情况吗?
  • 使用 HTTP 分析器,例如Fiddler调试从客户端到服务器传输的信息(表单、http 标头等)

就你的情况而言,我假设这与身份验证模式有关。也许在你的内部网中,你会被自动验证,因为你都是 Windows 域用户。但我假设你的生产服务器在你的 Windows 域之外,因此该配置不适用。

相关内容