Как я разрешаю неоднозначность между своим DLL проекта и DLL в GAC?

Я в настоящее время работаю над другой проблемой в своем проекте MVC ASP.NET. Чтобы лучше понять то, что происходит в кодовой базе, я решил сослаться на проект Исходного кода MVC ASP.NET в своем собственном проекте путем добавления файла решения к моим ссылкам.

Когда я сделал это, я начал получать HTTP 404 ошибки.

Это именно так происходит, мне установили точку останова на OnException() метод HandleErrorAttribute, иначе, возможно, требовалось много времени для нахождения фактической проблемы. Когда я нависаю над filterContext параметр в OnException вызов метода, я получаю это Exception описание:

    The type 'System.Web.Mvc.ViewMasterPage' is ambiguous: 
        it could come from assembly [path to assembly in GAC] 
        or from assembly [path to assembly in my project] 

Блок в GAC там, потому что я установил выпуск ASP.NET MVC 2.0 RC2.

Как я лучше всего разрешаю эту неоднозначность?

5
задан Community 23 May 2017 в 10:27
поделиться

2 ответа

System.Web.Mvc упоминается в Web.Config, в разделе . В моем приложении эта запись имеет атрибут токена открытого ключа.

Я решил проблему, удалив атрибут PublicKeyToken.

Так вот:

<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral,
     PublicKeyToken=31BF3856AD364E35"/> 

стало вот так:

<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral"/> 

Видимо, Visual Studio не может найти подписанную сборку в GAC, когда отсутствует PublicKeyToken, поэтому она вынуждена использовать локальную сборку проекта.

3
ответ дан 15 December 2019 в 00:59
поделиться

Видя, что компьютеры просто продолжают ускоряться и что математики все еще разрабатывают эти алгоритмы

RSA шифрование является безопасным в том, что он полагается на действительно большое число трудно фактор. В конце концов, компьютеры получат достаточно быстро, чтобы за разумное время увеличить число. Чтобы оставаться впереди кривой, вы используете большее число.

Однако для большинства веб-сайтов цель хеширования паролей состоит в том, чтобы сделать неудобным для тех, кто имеет доступ к базе данных, чтение пароля, а не обеспечение безопасности. Для этого MD5 в порядке 1 .

Здесь подразумевается, что если злонамеренный пользователь получает доступ ко всей базе данных, ему не нужен пароль. (Замок на входной двери не помешает мне войти в окно.)


1 Только потому, что MD5 "сломан", не означает, что вы можете просто повернуть его вспять, когда захотите.

-121--1000406-

Место, где обычно используется DefureValue для классов, сериализованных или десериализованных в XML. Он не задает значение по умолчанию во время создания экземпляра и не влияет на автоподдержку.

Из MSDN:

Атрибут DefureStartAttribute не приведет к автоматической инициализации элемента со значением атрибута. Необходимо задать начальное значение в коде.

MSDN - Класс атрибутов DefureStartAttribute


Изменить: как указывает Roland, как и другие, упомянутые в ответах, атрибут также используется конструктором форм

-121--1064221-

Я не уверен, но, возможно, ваш ответ лежит в теге assemblyBinding вашего конфигурационного элемента: http://msdn.microsoft.com/en-us/library/twy1dw1e.aspx

1
ответ дан 15 December 2019 в 00:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: