Как исправить «Исключение типа« Unity.Exceptions.InvalidRegistrationException »было выдано» - PullRequest
1 голос
/ 28 октября 2019

Я пытаюсь войти в приложение, но это исключение. Я оставил его с правильно работающим приложением. Через 2 дня я снова начал работать над этим, так что теперь это исключение.

Я применил единицу работы за 2 дня. Сегодня, перед проверкой приложения, я попытался добавить проверку, добавив метод действия «элемент уже существует». Затем я удалил этот код, все еще давая это исключение. Не понимаю. Проблема в контроллере учетной записи, так как он не позволяет войти в систему.

 public static class UnityConfig
{
    public static void RegisterComponents()
    {
        var container = new UnityContainer();

        // register all your components with the container here
        // it is NOT necessary to register your controllers

        // e.g. container.RegisterType<ITestService, TestService>();
        container.RegisterType<ICategoryRepository, CategoryRepository>();
        DependencyResolver.SetResolver(new UnityDependencyResolver(container));
    }

Это UnityConfig.

 public class CategoryViewModel
{
    public int CategoryId { get; set; }

    [Required]
    [Remote("IsCategoryExists", "Category", HttpMethod = "POST", ErrorMessage = "This Category already exist.", AdditionalFields = "CategoryName,CategoryId")]
    [Display(Name ="Category Name")]
    public string CategoryName { get; set; }

    [Display(Name = "Is Active")]
    public bool IsActive { get; set; }
}

Вот модель категории

public class CategoryController : AdminBaseController
{
    LaundryManagementSystemEntities db = new LaundryManagementSystemEntities();
    //private ICategoryRepository interfaceobj;

    private UnitOfWork unitOfWork;

    public CategoryController()
    {
       // this.interfaceobj = iCategory;
        //For Repositorypatterns
        //this.interfaceobj = new CategoryRepository(new LaundryManagementSystemEntities());

        //For Unit Of Work 
       this.unitOfWork = new UnitOfWork(new LaundryManagementSystemEntities());
    }

    // GET: Category        
    public ActionResult Index()
    {
        return View();
    }
    public ActionResult Create()
    {
        CategoryViewModel categoryViewModel = new CategoryViewModel();
        return PartialView("Create",categoryViewModel);
    }

    [HttpPost]
    public ActionResult Create(CategoryViewModel category)
    {
        if (ModelState.IsValid)
        { 
            unitOfWork.CategoryRepository.CreateCategory(category);
           // interfaceobj.CreateCategory(catogery);
        }
        return PartialView("Create",category);
    }

    //[HttpPost]
    //public JsonResult IsCategoryExists(string CategoryName, int CategoryId)
    //{
    //    bool found = false;

    //    if (CategoryId == 0)
    //    {
    //        found = db.Categories.Any(na => na.CategoryName == CategoryName);
    //    }
    //    else
    //    {

    //        found = db.Categories.Any(na => na.CategoryName == CategoryName && na.CategoryID != CategoryId);
    //    }
    //    if (!found)
    //    {
    //        return Json(true, JsonRequestBehavior.AllowGet);
    //    }
    //    return Json(false, JsonRequestBehavior.AllowGet);
    //}

Это контроллер, к которому я добавил метод IsCategoryExists, который пока комментируется.

 ublic class UnitOfWork: IDisposable
{
    private CategoryRepository categoryRepository;
    private LaundryManagementSystemEntities _entities;

    public UnitOfWork(LaundryManagementSystemEntities entities)
    {
        this._entities = entities;
    }

    public CategoryRepository CategoryRepository
    {
        get
        {
            if (categoryRepository == null)
            {
                categoryRepository = new CategoryRepository(_entities);
            }
            return categoryRepository;
        }
    }

    public void Dispose()
    {
        _entities.Dispose();
    }

    public void Save()
    {
        _entities.SaveChanges();
    }
}

Единицакласса работы

  public class CategoryRepository : ICategoryRepository
{
    private LaundryManagementSystemEntities context;

    public CategoryRepository(LaundryManagementSystemEntities db)
    {
        this.context = db;
    }

    public void CreateCategory(CategoryViewModel categoryViewModel)
    {
        var category = new Category();
        category.CategoryName = categoryViewModel.CategoryName;
        category.IsActive = categoryViewModel.IsActive;
        context.Categories.Add(category);
        context.SaveChanges();
    }

    public void DeleteCategory(int categoryId)
    {

        Category category = context.Categories.Find(categoryId);
        if (category != null)
        {
            context.Categories.Remove(category);
            context.SaveChanges();
        }
    }

    public void DeleteProductOfCategory(int productId)
    {
         var listProducts = context.Products.Where(x => x.CategoryID == productId).ToList();
         foreach (var p in listProducts)
         {
             context.Entry(p).State = EntityState.Deleted;
         }
    }

    public void Dispose()
    {
        throw new NotImplementedException();
    }

    public CategoryViewModel GetEditCategory(int? categoryId)
    {
        Category category = context.Categories.Find(categoryId);
        var categoryViewModel = new CategoryViewModel();
        categoryViewModel.CategoryId = category.CategoryID;
        categoryViewModel.CategoryName = category.CategoryName;
        categoryViewModel.IsActive = category.IsActive;
        return categoryViewModel;          
    }

    public void PostEditCategory(CategoryViewModel model)
    {
        Category category = context.Categories.Find(model.CategoryId);
        category.CategoryID = model.CategoryId;
        category.CategoryName = model.CategoryName;
        category.IsActive = model.IsActive;
        context.SaveChanges();
    }

    public List<Category> GetCategories()
    {
        context.Configuration.ProxyCreationEnabled = false;
        return context.Categories.OrderBy(a => a.CategoryName).ToList();
    }

    public Category GetCategoryById(int? categoryId)
    {
        return context.Categories.Find(categoryId);
    }

Это класс репозитория категорий

Я просто хочу знать, почему он дает исключение и что мне делать.

1 Ответ

0 голосов
/ 28 октября 2019

Вот ответ, который я пробовал с этим, и он работает. https://stackoverflow.com/a/45052060/12061392 Этот ответ является лучшим с лучшим объяснением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...