将网站发布到Azure时出现一个奇怪的错误。 我使用VS 2010将其发布到服务中,但是在将数据库连接到网站时遇到了此错误。 登录页面和站点上的大多数页面一样,即使依赖于相同数据库的页面也可以正常工作。 有问题的页面显示以下文本:

Server Error in '/' Application.
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an  instance of an object.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:


[NullReferenceException: Object reference not set to an instance of an object.]
   MAO.Controllers.ReviewController.Index() +603
   lambda_method(Closure , ControllerBase , Object[] ) +62
   System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[]     parameters) +14
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +214
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +27
   System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +55
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +253
   System.Web.Mvc.<>c__DisplayClass17.<InvokeActionMethodWithFilters>b__14() +21
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +253
   System.Web.Mvc.<>c__DisplayClass17.<InvokeActionMethodWithFilters>b__14() +21
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +191
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +324
   System.Web.Mvc.Controller.ExecuteCore() +106
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +91
   System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10
   System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +34
   System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +19
   System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +10
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
   System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +48
   System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7
   System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +60
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9629708
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

错误发生在以下代码部分中:

public ActionResult ShortDateResponse(int reviewId, int questionId, string response) {
        if (string.IsNullOrEmpty(response)) {
            var answer = repository.GetAnswerByQuestionId(reviewId, questionId);
            if (answer != null) {
                repository.DeleteAnswerById(answer.Id);
            }
        } else {
            try {
                DateTime date = DateTime.ParseExact(response, "MM/yyyy", CultureInfo.InvariantCulture);
                repository.ShortDateResponse(reviewId, questionId, date);
            } catch (Exception fe) {
                throw new ArgumentException("Date format should be MM/yyyy", fe);
            }
        }
        return Json(new {
            success = true,
            error = "none"
        });
    }

在这条线上:

DateTime date = DateTime.ParseExact(response, "MM/yyyy", CultureInfo.InvariantCulture);

因此,在我看来代码不负责任。

我尝试了多种方式将数据库上载到Azure,并且根据各种Microsoft教程进行了介绍,并查看了其他在SO和其他地方提出了非常相似问题的人。 在这一点上,我不确定如何前进,所以我问。

最初,我使用SQL Management Studio 2008R的“提取数据层应用程序”和“导入数据层应用程序”来加载数据库的架构,然后使用“导出数据”和“导入数据”来将数据加载到服务器上。 我确保所有表的commandtimeout变量都设置为0,这样一来就不会丢失任何内容,而且可以肯定的是,所有内容都显示在Azure数据库上。 当出现上述错误时,我尝试使用“生成脚本”上载架构,以防以前的过程出现错误。 然后,我使用“导出/导入数据”将数据放在网站上。 我收到了同样的错误。

该网站可以在内部服务器上正常运行,并且已经在其他地方成功部署了,但是如果可能的话,我想迁移到Azure。 另外,我已经检查了链接到本地​​SQL服务器的上载网站,并且该网站工作正常,因此问题出在将SQL数据库上载到Azure服务器。

我知道许多出现此错误的人都可以通过在web.config中编辑其连接字符串来解决此问题。 我对此进行了调查,并通过Filezilla手动将我的连接字符串编辑为在各种网站上显示的格式,但无济于事。

如果您有任何见解,我将不胜感激,如果您需要更多详细信息,请告诉我。 谢谢!

===============>>#1 票数:0

一种想法是,它可能是SQL Azure实例上的防火墙规则。 在Windows Azure管理门户中,转到该SQL Azure服务器的“配置”页面。 是否将其设置为“是”以允许Windows天蓝色服务?

您是否还可以发布控制器动作MAO.Controllers.ReviewController.Index()的代码,以便我们可以看到在哪里发生空引用异常?

  ask by user2292775 translate from so

未解决问题?本站智能推荐: