我的MVC应用程序的一部分在实时部署时无法正常工作

时间:2013-08-19 22:43:29

标签: c# asp.net-mvc-3 web-deployment setup-deployment

这是我第一次在Amazon S3服务器中部署MVC Web应用程序。 并且网站已经在浏览器中加载但是当我点击注册按钮时它会抛出错误。 我只能看到区别 我的应用程序命名为reporting.e-tale.co.uk,域名设置为dashboard.e-tale.co.uk,所以我在liveboard中创建了一个文件夹.-tale.co.uk并复制了我的文件。它在当地运作良好,不知道它抛出错误的原因。

请纠正我如果我做错了什么。 我不确定提供什么细节。如果难以提出解决方案,我会为您提供更多详细信息。 感谢

应用程序中的服务器错误。

对象引用未设置为对象的实例。

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。

来源错误:

在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。

堆栈追踪:

[NullReferenceException:对象引用未设置为对象的实例。]    reporting.e_tale.co.uk.Controllers.AccountController.Register()+255    lambda_method(Closure,ControllerBase,Object [])+78    System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext,IDictionary 2 parameters) +263 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2个参数)+38    System.Web.Mvc。<> c_ DisplayClass15.b _12()+128    System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter,ActionExecutingContext preContext,Func 1 continuation) +826106 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func 1 continuation)+826106    System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter,ActionExecutingContext preContext,Func 1 continuation) +826106 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList 1个过滤器,ActionDescriptor actionDescriptor,IDictionary`2参数)+314    System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext,String actionName)+825328    System.Web.Mvc.Controller.ExecuteCore()+159    System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)+335    System.Web.Mvc。<> c_ DisplayClassb.b _5()+62    System.Web.Mvc.Async。<> c_ DisplayClass1.b _0()+ 20    System.Web.Mvc。<> c_ DisplayClasse.b _d()+54    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+ 469    System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)+375

版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.1008

帐户控制器(注册)

     /// <summary>
    /// GET: /Account/Register
    /// Action account Register.
    /// </summary>
    /// <returns></returns>
    [AcceptVerbs(HttpVerbs.Get)]
     public ActionResult Register()
    {
        var myViewData = new RegisterForm
        {
            Person = new Person
            {
                CreatedAt = DateTime.Now,
                AppellationId =
                    _appellationRepository.GetAppellationByDescription(
                        "Mr").Id,
                CountryId =
                    _countryRepository.GetCountryByName(
                        "United Kingdom").Id,
                CorporationId = _corporationRepository.GetCorporationByName(
                "Samsung").Id
                //ManufacturerId = _manufacturerRepository.GetManufacturerByName(
                //"Samsung").Id
            },
            User =
                new User
                {
                    CreatedAt = DateTime.Now,
                    Guid = Guid.NewGuid().ToString("N")
                }
        };

        myViewData.Appellations = new SelectList(_appellationRepository.GetAllAppellations().ToList(), "Id",
                                                 "Description", myViewData.Person.AppellationId);
        myViewData.Countries = new SelectList(_countryRepository.GetAllCountries().ToList(), "Id", "Name",
                                              myViewData.Person.CountryId);
        myViewData.Corporations = new SelectList(_corporationRepository.GetAllcorporations().ToList(), "Id",
                                                "Description", myViewData.Person.CorporationId);
        //myViewData.Manufacturers = new SelectList(_manufacturerRepository.GetAllManufacturers().ToList(),"Id",
        //    "Description",myViewData.Person.ManufacturerId);
        myViewData.PasswordLength = MembershipService.MinPasswordLength;

        return View(myViewData);
    }

1 个答案:

答案 0 :(得分:3)

你的代码不是很防守..因此你的问题。

null的{​​{1}}方法中有一个AccountController对象..那可能是什么?

其中任何一个:

Register()

检查您的数据,并检查您的存储库是否实际返回数据。您无法检查_appellationRepository.GetAppellationByDescription("Mr") _countryRepository.GetCountryByName("United Kingdom") _corporationRepository.GetCorporationByName("Samsung") 对象上的属性(在上述每个调用之后,您通过null进行操作)。正如我在评论中所说的那样,可能是因为您的实时数据库不包含本地数据库包含的所有数据。确保它们与1对1匹配,当你在那里时......放置一些防御机制! E.g:

.Id