System.Web.Routing.RouteCollection и System.Web.Mvc.RouteCollectionExtensions имеют одинаковое простое имя "IgnoreRouteInternal".

У меня есть проект ASP.NET MVC, над которым я не работал почти два месяца. Отладка в браузере работает нормально, пока я не изменяю ЛЮБОЙ код. В тот момент, когда я изменяю любой код, даже добавляя пробелы, я получаю эту ошибку:

An exception of type 'System.NotSupportedException' occurred in EntityFramework.dll but was not handled in user code

Additional information: The type 'System.Web.Routing.RouteCollection+IgnoreRouteInternal' and the type 'System.Web.Mvc.RouteCollectionExtensions+IgnoreRouteInternal' both have the same simple name of 'IgnoreRouteInternal' and so cannot be used in the same model. All types in a given model must have unique simple names. Use 'NotMappedAttribute' or call Ignore in the Code First fluent API to explicitly exclude a property or type from the model.

Исключение происходит в этой строке:

var item = Cards.FirstOrDefault(s => s.name == cardName);

Единственное, о чем я могу думать, это то, что изменение настроек маршрутизации было, вероятно, одной из последних вещей, которые я сделал, прежде чем снова поднял этот проект, насколько я могу судить, там все нормально. Другое дело, что я использую TortiseGit и bitbucket, но я не вижу, какой эффект это даст. У меня есть другой проект с аналогичной настройкой, который не имеет проблем.

В случае, если я допустил ошибку, это мой RouteConfig.cs

using System;
using System.Web.Mvc;
using System.Web.Routing;

namespace houseOfCards
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

            routes.MapRoute(
                name: "Hello",
                url: "{controller}/{action}/{name}/{id}"
                );
        }
    }
}

Я не знаю, как решить эту проблему, любые предложения будут высоко оценены.

1 ответ

Решение

Я столкнулся с подобной проблемой, после трех дней изучения и отладки, которые мне удалось исправить, сообщение об ошибке, как правило, вводит в заблуждение, потому что оно относится только к System.Web.Routing.RouteCollection и System.Web.Mvc.RouteCollectionExtensions классы, и это заставляет думать, что маршруты как-то связаны с этим, но они не имеют, по крайней мере, в моем случае.

В моем случае я ошибочно объявил свойство навигации объекта как ICollection<Controller>Таким образом, Entity Framework запутался насчет классов, которые я хотел зарегистрировать.

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

Я надеюсь, что это помогает

Другие вопросы по тегам