Мне нравится этот код:
function getClientIP() {
if (isset($_SERVER)) {
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))
return $_SERVER["HTTP_X_FORWARDED_FOR"];
if (isset($_SERVER["HTTP_CLIENT_IP"]))
return $_SERVER["HTTP_CLIENT_IP"];
return $_SERVER["REMOTE_ADDR"];
}
if (getenv('HTTP_X_FORWARDED_FOR'))
return getenv('HTTP_X_FORWARDED_FOR');
if (getenv('HTTP_CLIENT_IP'))
return getenv('HTTP_CLIENT_IP');
return getenv('REMOTE_ADDR');
}
ServiceLocator.dll
, для которой требуется старая версия сборки Unity, теперь, когда вы ссылаетесь на ServiceLocator
, вы должны предоставить ей старую версию Unity, и это создает проблему. Вы можете использовать FusLogVw , чтобы узнать, кто загружается старые сборки, просто определите путь для журнала и запустите свое решение, затем проверьте (в FusLogvw) первую строку, где загружена сборка Unity, дважды щелкните ее и посмотрите на вызывающую сборку, и здесь вы идете.
, если вы получаете это сообщение об ошибке, открыв приложение на вашем Windows XP, это означает, что сначала вы установили это приложение из-за того, что он не работает без сетевой среды 4 и пакета обновления 3. вы установили оба, и снова вы получаете эту ошибку, поэтому вам нужно снова установить это приложение, но сначала удалить из add и remove
, если это не работает, пожалуйста, не злоупотребляйте мной. я также младший
Попробуйте очистить папки Debug и Release в вашем решении. Затем удалите и снова добавьте единство.
Эта проблема произошла со мной, когда одна из моих зависимых библиотек составляла DLL с «Any CPU», когда родительская библиотека ожидала компиляцию «x64».
В редакторе решений щелкните правой кнопкой мыши по проекту (а не по решению), на вкладке сборки выберите Платформа цели: «Любой процессор».
У меня было это сегодня, и в моем случае проблема была очень странной:
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Host.SystemWeb" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0" newVersion="3.1.0.0" />
</dependentAssembly>0.
Обратите внимание на блуждающих символов в конце XML - так или иначе они были перенесены с номера версии на конец этого блока XML!
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Host.SystemWeb" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" />
</dependentAssembly>
Изменен и выше, и вуаля! Все снова работало.
Вы должны удалить файл appname.dll из выходной папки. Отладка и удаление папок. Перестроить и скопировать в файл регенерированной DLL-файл.
На 99% Не удалось загрузить файл или сборку или одна из проблем с зависимостями вызвана зависимостями! Я предлагаю вам выполнить следующие действия:
NativeInterfaces.dll
) MSVCR71.DLL
c:\windows\system32
) cd \Windows\System32
regsvr32 /i msvcr71.dll
API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL
), которые не были найдены, и привели меня к этому вопросу stackoverflow . В основном имейте в виду, можно посмотреть на ложные положительные для некоторых файлов, ссылка обеспечивает более подробную информацию.
– cheriejw
15 May 2018 в 01:00
У меня была аналогичная проблема. ** Ответ Juntos правильный **, но вы должны отметить один важный совет!
Для единства 2.1.505.2 указаны различные AssemblyVersion и AssemblyFileVersion:
[/g1]
AssemblyFileVersion используется nuget, но CLR не заботится об этом! CLR будет использовать только AssemblyVersion!
Поэтому перенаправления должны применяться к версии, указанной в AssemblyVersion: 2.1.505.0
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.1.505.0" newVersion="2.1.505.0" />
</dependentAssembly>
</assemblyBinding>
См. Также: . Каковы различия между AssemblyVersion, AssemblyFileVersion и AssemblyInformationalVersion?
Проверьте файл Web.config / App.config в своем проекте. Посмотрите, верны ли номера версий.
<bindingRedirect oldVersion="X.X.X.X-X.X.X.X" newVersion="X.X.X.X" />
Это сработало для меня.
Вы говорите, что у вас много проектов в вашем решении ... ну, начните с одного в верхней части порядка сборки. Получите это, чтобы построить, и как только вы это выясните, вы можете применить одно и то же исправление к остальным.
Честно говоря, вам, вероятно, просто нужно обновить свою ссылку. Похоже, что вы либо обновили свою версию, либо не обновили ссылки, либо это относительный путь, если вы держите свое решение в контроле источника. Просто подтвердите свои предположения и снова добавьте ссылку.
Microsoft Enterprise Library (ссылка на .NetTiers) была нашей проблемой, которая, в свою очередь, ссылалась на более старую версию Unity. Чтобы решить проблему, мы использовали следующее переадресацию привязки в файле web.config:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Practices.Unity.Configuration" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0-2.0.414.0" newVersion="2.1.505.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
. Кроме того, вам может потребоваться просто обновить корпоративную библиотеку до последней версии.
Откройте диспетчер IIS
Выберите пулы приложений
, затем выберите пул, который вы используете
перейдите к дополнительным настройкам (с правой стороны)
Измените флаг Включить 32-битное приложение false на true.
Мое решение для .NET 4.0 с использованием Enterprise Library 5 заключалось в том, чтобы добавить ссылку на:
Microsoft.Practices.Unity.Interception.dll
Несмотря на то, что исходный вопрос был опубликован 5 лет назад, проблема все еще сохраняется и довольно раздражает.
Общее решение - это тщательный анализ всех ссылочных ассемблеров, чтобы понять, что происходит не так. Чтобы упростить эту задачу, я создал инструмент (расширение Visual Studio), который позволяет выбирать сборку .Net (.ddl или .exe-файл) и получать график всех ссылочных ассемблеров с прорисованными конфликтующими или пропущенными ссылками.
Инструмент доступен в галерее Visual Studio: https://marketplace.visualstudio.com/vsgallery/051172f3-4b30-4bbc-8da6-d55f70402734
Другая возможная причина: убедитесь, что вы случайно не дали обоим проектам одно и то же имя сборки в свойствах проекта.
В моем случае ни один из предложенных ответов не работал.
Вот что сработало для меня:
Второй шаг был важен, по-видимому, так как он не работал без него.
I «Задать в качестве стартового проекта» разгруженную / необоснованную библиотеку / проект.
Затем развернул ее.
Это сработало!
Я думаю, 't нашел .dll, потому что он не был в сборке сначала.
После работы для меня.
Для меня восстановление игры единства без работы с Unity C # Project Checkmark.
Хорошо, это может показаться очень глупым, но вот как я решил проблему, попробовав все другие решения и проведя ночь на эту глупость.
Я получал ту же ошибку с некоторой DLL, отсутствующей в Bin Folder. Я попытался удалить, восстановить все из Team Foundation Server, но не работал. Получил копию папки Bin с моей офис-мателокальной машины и заменил ее. Это тоже не сработало. Наконец, я вручную перешел на FTP-сервер, получил копию DLL, которая отображалась как отсутствующая, и затем она начала показывать, что следующий файл в последовательности списка файлов отсутствует.
Итак, я ftped server Получил все Bin Folder, вручную заменил каждый файл по одному. (Не Ctrl + All и заменить .. Я пробовал: он не работал.) И как-то это сработало ...
После работы для меня.
Для меня ни один из других решений не работал (включая стратегию очистки / восстановления). Я нашел другое решение для решения проблемы, которое заключается в закрытии и повторной открытии Visual Studio.
Я полагаю, это заставляет Visual Studio повторно загружать решение и все проекты, перепроверяя зависимости в этом процессе.
Я также получил эту ужасную ошибку и нашел решение для этого ...
- Щелкните правой кнопкой мыши по имени решения
- Нажмите «Чистое решение»
]- Перезапустить Visual Studio
- Перейти к проекту Свойства >> Сборка
- Изменить конфигурацию для выпуска
- Начать отладку (F5)
1), 2)
4), 5)
Надеюсь, это вам тоже поможет.
Спасибо Riddhi M. После этого работал для меня.
Удалить временные файлы C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Временные файлы ASP.NET Закрыть VSTS и открыть снова Удалить и добавить те же DLL (Примечание: вы добавляете одинаковые совпадающие версии)
Попробуйте проверить, установлено ли для свойства «Копировать в локальное» значение true, а для конкретной версии установлено значение «Истина». Это относится к приложениям в Visual Studio.
В моем случае в папке bin была не ссылочная dll под названием Unity.MVC3, я безуспешно пытался найти любую ссылку на это в visual studio, поэтому мое решение было так просто, как удалить эту DLL из папки bin.
Следите за противоречивыми ссылками. Даже после чистых и перестроенных противоречивых ссылок все еще будет возникать проблема. Моя проблема заключалась между Афором и Согласием. Я удалил обе ссылки и повторно добавил ссылки, переучивая конкретную ссылку (в частности, мой случай, просто Accord).
Не уверен, что это может помочь.
Проверьте соответствие имени Assembly и пространства имен Default в свойствах в ваших ассамблях. Это разрешило мою проблему, которая дала ту же ошибку.