仅当部署在调试环境外部时,才会在函数外部发生异常
本文关键字:外部 异常 函数 部署 调试 环境 | 更新日期: 2023-09-27 18:34:57
我正在使用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)
到目前为止,谷歌也没有提供太大的帮助,所以有谁知道发生了什么或我做错了什么?
这些评论让我想到了将调试符号上传到服务器的想法。这实际上在运行时错误页面上给了我一个文件和行号,并帮助我解决了我的问题。
谢谢你,@JohnKoerner和@Raj激发了这个想法!
问题源于我所做的一个HTTPModule
,它应该做的一件事就是初始化环境。不知何故,模块没有被实例化。由于它没有执行任何内容,因此环境变得不完整和不稳定,因此在执行后期起源于NullReferenceException
。
我只需要在web.config
文件的System.WebServer
命名空间中注册HTTPModule
。这与应用程序池上的托管管道设置有关。将其设置为 integrated
时,还需要在 System.WebServer
命名空间中注册HTTPModule
。之后,问题已修复,SSO 平台现已启动并运行。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add type="UniQ.SSO.Module.OAuthAuthenticationModule" name="OAuthAuthentication"/>
</modules>
</system.webServer>