Изменения кода валидатора не отражены в отладочном прогоне, точки останова не достигнуты - PullRequest
1 голос
/ 10 мая 2019

Приложение собирается и работает без ошибок.Когда я пытаюсь отправить форму в режиме отладки, приложение не только не достигает точек останова в коде валидатора, но и возвращается к коду в удаленном файле, который вызывает исключение из-за нулевого объекта.Я очистил все кэши, очистил решение, перестроил решение, перезапустил VS2017, перезагрузил машину, создал решение с использованием нового пользователя, проверил фазу Луны и, похоже, ничего не решило эту проблему.

Iиметь простой валидатор формы следующим образом:

// Аннотация в модели:

    [CustomValidator(ErrorMessage = "PIN must not be the same as your phone number.")]

// Файл валидатора

using System;using System.ComponentModel.DataAnnotations;

пространство имен MyWeb.Models {внутренний класс CustomValidator: ValidationAttribute {защищенное переопределение ValidationResult IsValid (значение объекта, ValidationContext validationContext) {

        var model = (Model)validationContext.ObjectInstance;
        string phone = string.Empty; // break point set here
        string PIN = string.Empty;
        string last4 = string.Empty;
        try
        {
            phone = model.PrimaryPhone;
            PIN = model.PIN;

            return ValidationResult.Success; // defaults to always true for testing
        }
        catch (Exception)
        {

            throw;
        }

    }
}

}1016 * Я ожидаю, что правильный код валидатора проверит данные поля и вернет true независимо от введенных значений.

//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.]
//   TelemojiWeb.Models.CustomPINValidator.IsValid(Object value, ValidationContext validationContext) in C:\src\TelemojiAll\TelemojiWeb\Models\CustomPINValidator.cs:27
//   System.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(Object value, ValidationContext validationContext) +29
//   System.Web.Mvc.DataAnnotationsModelValidator.Validate(Object container) +138
//   System.Web.Mvc.<Validate>d__1.MoveNext() +237
//   System.Web.Mvc.DefaultModelBinder.OnModelUpdated(ControllerContext controllerContext, ModelBindingContext bindingContext) +538
//   System.Web.Mvc.DefaultModelBinder.BindComplexElementalModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Object model) +68
//   System.Web.Mvc.DefaultModelBinder.BindComplexModel(ControllerContext controllerContext, ModelBindingContext bindingContext) +1197
//   System.Web.Mvc.DefaultModelBinder.BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) +330
//   System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) +330
//   System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext, ActionDescriptor actionDescriptor) +105
//   System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__19(AsyncCallback asyncCallback, Object asyncState) +743
//   System.Web.Mvc.Async.WrappedAsyncResult`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +14
//   System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +128
//   System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeAction(ControllerContext controllerContext, String actionName, AsyncCallback callback, Object state) +343
//   System.Web.Mvc.Controller.<BeginExecuteCore>b__1c(AsyncCallback asyncCallback, Object asyncState, ExecuteCoreState innerState) +25
//   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +30
//   System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +128
//   System.Web.Mvc.Controller.BeginExecuteCore(AsyncCallback callback, Object state) +465
//   System.Web.Mvc.Controller.<BeginExecute>b__14(AsyncCallback asyncCallback, Object callbackState, Controller controller) +18
//   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +20
//   System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +128
//   System.Web.Mvc.Controller.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state) +374
//   System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state) +16
//   System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__4(AsyncCallback asyncCallback, Object asyncState, ProcessRequestState innerState) +52
//   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +30
//   System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +128
//   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +384
//   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +48
//   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +16
//   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +103
//   System.Web.<>c__DisplayClass285_0.<ExecuteStepImpl>b__0() +26
//   System.Web.StepInvoker.Invoke(Action executionStep) +101
//   System.Web.<>c__DisplayClass4_0.<Invoke>b__0() +22
//   Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule.OnExecuteRequestStep(HttpContextBase context, Action step) +64
//   System.Web.<>c__DisplayClass284_0.<OnExecuteRequestStep>b__0(Action nextStepAction) +54
//   System.Web.StepInvoker.Invoke(Action executionStep) +85
//   System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +9980101
//   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +159
//
//Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.7.3282.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...