-1

这是我第一次在 Amazon S3 服务器中部署 MVC Web 应用程序。并且网站已加载到浏览器中,但是当我单击注册按钮时,它会抛出错误。我可以看到唯一的区别是我的应用程序被命名为reporting.e-tale.co.uk 并且域被设置为dashboard.e-tale.co.uk,所以我在live 中创建了一个文件夹作为dashboard.e-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, IDictionary2 parameters) +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, Func1 延续) +826106 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func1 continuation) +826106 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList1 个过滤器,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);
    }
4

1 回答 1

3

您的代码不是很有防御性..因此是您的问题。

你的方法中有一个null对象..那可能是什么?AccountControllerRegister()

这些中的任何一个:

_appellationRepository.GetAppellationByDescription("Mr")
_countryRepository.GetCountryByName("United Kingdom")
_corporationRepository.GetCorporationByName("Samsung")

检查您的数据,并检查您的存储库是否确实在返回数据。您无法检查null对象的属性(您可以通过.Id在上述每个调用之后执行此操作)。正如我在评论中所说..这可能是因为您的实时数据库不包含本地数据库包含的所有数据。确保它们 1 对 1 匹配,并且当您在那里时……设置一些防御机制!例如:

var country = _countryRepository.GetCountryByName("United Kingdom");

if (country == null) 
    // Log the error or give a more descriptive error
于 2013-08-19T22:55:46.083 回答