Сведения об исключении: System.ArgumentNullException: значение не может быть нулевым.Имя параметра: мет при запуске - PullRequest
4 голосов
/ 02 февраля 2012

У меня есть проект, в котором у меня есть свои API-классы, и в этом проекте я создал Database.cs. В моем проекте MVC я обновил API. При запуске приложения у меня появляется следующее сообщение об ошибке, может кто-нибудь помочь, пожалуйста, так как я не могу понять, почему у меня появляется это сообщение об ошибке.

С http://www.garethelms.org/2011/05/help-getting-started-with-petapoco/#comment-69, Я вижу, что все GetSetMethod () являются GetSetMethod (true) с момента установки petaPOCo.

Значение не может быть нулевым. Имя параметра: мет. Описание: необработанный исключение произошло во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и где он возник в коде.

Сведения об исключении: System.ArgumentNullException: значение не может быть нулевым. Имя параметра: мет

Ошибка источника:

Линия 1990:} Линия 1991: Линия 1992: il.Emit (OpCodes.Callvirt, pc.PropertyInfo.GetSetMethod (истина)); // Poco Line 1993: обработано = верно; Строка 1994:}

Исходный файл: C: \ Dev \ MyProjectTest \ Code \ API \ Models \ PetaPoco.cs Строка: 1992

Трассировка стека:

[ArgumentNullException: значение не может быть нулевым. Имя параметра: мет]
System.Reflection.Emit.DynamicILGenerator.Emit (код операции OpCode, MethodInfo meth) +9492330 PetaPoco.PocoData.GetFactory (String sql, Строка connString, Boolean ForceDateTimesToUtc, Int32 firstColumn, Int32 countColumns, IDataReader r) в C: \ Dev \ MyProjectTest \ Code \ API \ Models \ PetaPoco.cs: 1992
PetaPoco.d__7 1.MoveNext() in C:\Dev\MyProjectTest\Code\API\Models\PetaPoco.cs:765<br> System.Collections.Generic.List 1..ctor (IEnumerable 1 collection) +327 System.Linq.Enumerable.ToList(IEnumerable 1 source) + 58
PetaPoco.Database.Fetch (String sql, Object [] args) в C: \ Dev \ MyProjectTest \ Code \ API \ Models \ PetaPoco.cs: 601
PecaTest.NewProject.API.Customer.LoadSortedByName () в C: \ Dev \ MyProjectTest \ Кодекса \ API \ Customer.cs: 68
PecaTest.NewProject.MvcUI.Models.CustomerListModel..ctor () в C: \ Dev \ MyProjectTest \ Code \ MvcUI \ Models \ CustomerListModel.cs: 14
PecaTest.NewProject.MvcUI.Controllers.CustomerController.GetIndexView () в C: \ Dev \ MyProjectTest \ Code \ MvcUI \ Контроллеры \ CustomerController.cs: 82
PecaTest.NewProject.MvcUI.Controllers.CustomerController.Index () в C: \ Dev \ MyProjectTest \ Code \ MvcUI \ Контроллеры \ CustomerController.cs: 19
lambda_method (Closure, ControllerBase, Object []) + 96
System.Web.Mvc.ActionMethodDispatcher.Execute (ControllerBase контроллер, параметры Object []) + 51
System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext, IDictionary 2 parameters) +409<br> System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2 параметры) + 52
System.Web.Mvc. <> C_ DisplayClassd.b _a () +127 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter (IActionFilter фильтр, ActionExecutingContext preContext, Func 1 continuation) +436<br> System.Web.Mvc.<>c__DisplayClassf.<InvokeActionMethodWithFilters>b__c() +61 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func 1 продолжение) + 436
System.Web.Mvc. <> C_ DisplayClassf.b _c () +61 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters (ControllerContext controllerContext, параметры IList 1 filters, ActionDescriptor actionDescriptor, IDictionary 2) + 305
System.Web.Mvc.ControllerActionInvoker.InvokeAction (ControllerContext controllerContext, String actionName) + 830
System.Web.Mvc.Controller.ExecuteCore () + 136
System.Web.Mvc.ControllerBase.Execute (RequestContext requestContext) +111 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute (RequestContext requestContext) + 39
System.Web.Mvc. <> C_ DisplayClass8.b _4 () + 65
System.Web.Mvc.Async. <> C_ DisplayClass1.b _0 () + 44
System.Web.Mvc.Async. <> C__DisplayClass8 1.<BeginSynchronous>b__7(IAsyncResult _) +42 System.Web.Mvc.Async.WrappedAsyncResult 1.End () +140 System.Web.Mvc.Async.AsyncResultWrapper.End (IAsyncResult asyncResult, Тег объекта) + 54
System.Web.Mvc.Async.AsyncResultWrapper.End (IAsyncResult asyncResult, Тег объекта) + 40
System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncResult asyncResult) +52 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest (результат IAsyncResult). 38p..IExecutionStep.Execute () +8969117 System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логический и завершенный синхронно) + 184

-------------------------------------------------------------------------------- Информация о версии: Microsoft .NET Framework Версия: 4.0.30319;Версия ASP.NET: 4.0.30319.272


Класс клиента

` private int id = 0;
    public  int ID
    {
        get { return id; }
        set { id = ID; }
    }

    protected string name;
    public Customer() { }

    public Customer(string name)
    {
        this.name = name;
    }

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    public override string ToString()
    {
        return name;
    }

`

Ответы [ 3 ]

5 голосов
/ 12 января 2017

Чтобы сделать принятый ответ немного более точным. Я столкнулся с этой проблемой, когда у меня было свойство в моем POCO, которое соответствовало имени столбца в таблице базы данных, но у меня не было установщика для свойства. В моем случае это было свойство, которое я сам вычислял, поэтому мне не нужны были данные из таблицы, и я хотел, чтобы они были доступны только для чтения. Добавление пустого сеттера устранило проблему для меня.

Вероятно, лучшим вариантом будет добавить атрибут Ignore к этому свойству.

В итоге я удалил столбец из таблицы.

4 голосов
/ 04 февраля 2012

Есть ли в вашем poco конструктор без параметров, т.е.нет аргументов?Это будет нужно.Если вы создали собственный конструктор с параметрами, у вас не будет конструктора по умолчанию без параметров, что может привести к сбою кода отражения.Может быть, это все.

1 голос
/ 04 февраля 2012

Проблема действительно была с POCO, так как я не смог установить и получить ID

...