只有在调试环境外部署时才会在函数外部发生异常

时间:2013-10-12 12:24:09

标签: c# asp.net asp.net-mvc-3 exception entity-framework-5

我正在使用ASP.Net MVC 3为我的公司创建一个单点登录提供程序。在我开始部署到服务器之前,一切正常。我部署到的每个生产服务器都将发生此Exception

    [NullReferenceException: Object reference not set to an instance of an object.]
   UniQ.SSO.Controllers.LoginController.Index(String requestToken, String callbackUrl) +89
   lambda_method(Closure , ControllerBase , Object[] ) +178
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +263
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +38
   System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +123
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +727142
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +727142
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +309
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +727076
   System.Web.Mvc.Controller.ExecuteCore() +159
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +334
   System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +62
   System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +15
   System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +52
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288

我尝试过各种各样的事情。我尝试使用项目复制所有本地依赖项或部署到不同的服务器。在那之后我没有工作,我尝试了远程调试,但它只是在function声明停止,并告诉该异常发生在那一点。

public ActionResult Index(string requestToken, string trustid, string challenge, string callbackUrl)

到目前为止,谷歌还没有太大的帮助,所以有谁知道发生了什么或者我做错了什么?

1 个答案:

答案 0 :(得分:1)

这些评论让我想到将调试符号上传到服务器。这实际上给了我一个运行时错误页面上的文件和行号,并帮助我解决了我的问题。

感谢@JohnKoerner和@Raj鼓舞人心的想法!

问题起源于我所做的HTTPModule,它应该做的事情之一就是初始化环境。不知何故,该模块没有得到实例化。由于它没有执行任何操作,因此环境变得不完整和不稳定,因此稍后会在执行中导致NullReferenceException

我还必须在HTTPModule文件的System.WebServer命名空间中注册web.config。这与应用程序池上的托管管道设置有关。如果将其设置为integrated,则还需要在HTTPModule命名空间中注册System.WebServer。之后问题得到解决,SSO平台现在正在运行。

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <add type="UniQ.SSO.Module.OAuthAuthenticationModule" name="OAuthAuthentication"/>
    </modules>
  </system.webServer>