При копировании вставленного контроллера объект состояния IAsyncResult становится нулевым - PullRequest
0 голосов
/ 22 января 2019

У меня есть переопределение IAsyncResult в унаследованном контроллере.Он отлично работает везде.

Но я скопировал, вставил старый контроллер и просмотрел и отредактировал их для похожей сущности, и теперь HTTP-пост-вызов возвращает ошибку, из-за которой объект состояния имеет значение null

   public class BaseController : Controller
{
    protected override IAsyncResult BeginExecuteCore(AsyncCallback callback, object state)
    {
        string cultureName = null;

        // Attempt to read the culture cookie from Request
        HttpCookie cultureCookie = Request.Cookies["_culture"];
        if (cultureCookie != null)
            cultureName = cultureCookie.Value;
        else
            cultureName = Request.UserLanguages != null && Request.UserLanguages.Length > 0 ?
                    Request.UserLanguages[0] :  // obtain it from HTTP header AcceptLanguages
                    null;
        // Validate culture name
        cultureName = CultureHelper.GetImplementedCulture(cultureName); // This is safe

        // Modify current thread's cultures            
        Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cultureName);
        Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;

        return base.BeginExecuteCore(callback, state); // HERE STATE IS NULL -----------------<
    }
}

Вот вызываемый контроллер:

   [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult OceanConsignmentDetails_Create([Bind(Include = "ID,OceanConsignment,HoldNumber,HoldVolume,NettWeight,Status_ID,Status,SelectedStatusId,StatusReason_ID,StatusComment,SelectedStatusReasonId,StatusReason,DelayDescription,LastUpdatedByUser_Id,LastUpdatedByUser,SelectedStorageLocationDestId,StorageLocationDestination,SelectedStorageLocationOriginId,StorageLocationOrigin,StatusDateTime")][DataSourceRequest]DataSourceRequest request, OceanConsignmentDetail oceanConsignmentDetail, int headerID)
    {
        db.Configuration.ProxyCreationEnabled = false;
        oceanConsignmentDetail.OceanConsignment = db.OceanConsignments.Find(headerID);
        if (oceanConsignmentDetail.StatusReason != null)
        {
            oceanConsignmentDetail.StatusReason = db.StatusReasons.Find(oceanConsignmentDetail.StatusReason.ID);
        }

        oceanConsignmentDetail.Status = (from cs in db.ConsignmentStatuses where cs.IsInbound == oceanConsignmentDetail.OceanConsignment.IsInbound && cs.TransportMode.Name == "Ocean" && cs.Level.Name == "Line" && cs.SequenceNumber == 0 select cs).First();

        var user = (from u in db.Users
                    where u.UserName == User.Identity.Name
                    select u).First();

        oceanConsignmentDetail.LastUpdatedByUser_Id = user.Id;
        oceanConsignmentDetail.LastUpdatedByUser = user;
        ModelState.Clear();
        TryValidateModel(oceanConsignmentDetail);

        if (ModelState.IsValid)
        {
            var entity = new OceanConsignmentDetail
            {
                ID = oceanConsignmentDetail.ID,
                HoldNumber = oceanConsignmentDetail.HoldNumber,
                HoldVolume = oceanConsignmentDetail.HoldVolume,
                NettWeight = oceanConsignmentDetail.NettWeight,
                LastUpdatedByUser_Id = oceanConsignmentDetail.LastUpdatedByUser_Id,
                LastUpdatedByUser = oceanConsignmentDetail.LastUpdatedByUser,
                Status = oceanConsignmentDetail.Status,
                DelayDescription = oceanConsignmentDetail.DelayDescription,
                StatusComment = oceanConsignmentDetail.StatusComment,

                StatusReason = oceanConsignmentDetail.StatusReason,
                StatusReason_ID = oceanConsignmentDetail.StatusReason_ID

            };

            db.OceanConsignmentDetails.Add(entity);
            db.SaveChanges();
            oceanConsignmentDetail.ID = entity.ID;
        }

        return Json(new[] { oceanConsignmentDetail }.ToDataSourceResult(request, ModelState));
    }
...