Я использую Visual Studio 2010, работающий в Windows 7 X64 Я пытался создать простую реализацию двусторонней связи WCF. К сожалению, я застрял очень быстро.System.BadImageFormatException - не может решить его
У меня есть 3 проекта: - Сервис библиотека с простой контракт на оказание услуг и реализации - ServiceHost: хостинг библиотеку услуг через SelfHosting - Клиент: Потребляя метод из службы WCF
Что-то я сразу заметил, что в библиотеке службы был любой процессор в качестве платформы. Остальные два имели x86 как платформу. В этот момент я понятия не имел, что я получу эту ошибку, так что это меня действительно не беспокоило.
Затем я запустил сервисную библиотеку, используя встроенный wcfsvchost.exe. Служба была размещена без проблем. Затем я хотел разместить свою службу через свой собственный хост. Здесь я получил свой первый опыт работы с System.BadImageFormatException. Я понятия не имел, что это было в тот момент. Так что я застрял и сделал какой-то поисковик. Если я правильно понимаю, платформа всех DLL и т. Д. Должна быть одинаковой. если кто-то может объяснить мне немного лучше. Пожалуйста, сделай.
Во всяком случае, я бы поменял платформу сервисной библиотеки, потому что у нее был любой процессор вместо x86. Поэтому я попытался сделать это с помощью настроек Project и менеджера конфигурации. Но проблема в том, что у меня не было возможности изменить ее. Затем я выгрузил проект, посмотрел, как выглядел другой .csproj, и изменил там значения. Перезагрузили его, и все было в порядке. Теперь у него была правильная платформа, x86. Итак, давайте проверим запуск сервисной библиотеки. BOOM System.BadImageFormatException
System.BadImageFormatException: Не удалось загрузить файл или файл сборки: /// C: \ Users \ Sven \ documents \ visual studio 2010 \ Projects \ DuplexDemo \ CustomerService2 \ bin \ Debug \ CustomerService2.dll или одной из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом. Имя файла: 'файл: /// C: \ Users \ Sven \ documents \ visual studio 2010 \ Projects \ DuplexDemo \ CustomerService2 \ bin \ Debug \ CustomerService2.dll' в System.Reflection.RuntimeAssembly._nLoad (AssemblyName имя_файла, Строка CodeBase, Доказательства assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark & stackMark, булева throwOnFileNotFound, булева forIntrospection, булевы suppressSecurityChecks) на System.Reflection.RuntimeAssembly.InternalLoadAssemblyName (AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark & stackMark, булевой forIntrospection, булевы suppressSecurityChecks) на System.Reflection.Assembly.Load (AssemblyName assemblyRef) в Microsoft.Tools.SvcHost.ServiceHostHelper.LoadServiceAssembly (String svcAssemblyPath)
=== Информация о состоянии предварительной привязки === LOG: Пользователь = Sven-PC \ Sven LOG: Где-ref связывается. Location = C: \ Users \ Sven \ documents \ visual studio 2010 \ Projects \ DuplexDemo \ CustomerService2 \ bin \ Debug \ CustomerService2.dll LOG: Appbase = file: /// C:/Users/Sven/documents/visual studio 2010/Проекты/DuplexDemo/CustomerService2/bin/Debug LOG: Initial PrivatePath = NULL
Вызов сборок: (Неизвестно).
LOG: Это связывание начинается с контекста загрузки LoadFrom. WRN: Исходное изображение не будет исследовано в контексте LoadFrom. Собственное изображение будет проверяться только в контексте нагрузки по умолчанию, например, с Assembly.Load(). LOG: Использование файла конфигурации приложения: C: \ Users \ Sven \ documents \ visual studio 2010 \ Projects \ DuplexDemo \ CustomerService2 \ bin \ Debug \ CustomerService2.dll.config LOG: Использование файла конфигурации хоста: LOG: Использование конфигурации компьютера файл из C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.21006 \ config \ machine.config. LOG: попытка загрузки нового файла URL: /// C:/Users/Sven/documents/visual studio 2010/Projects/DuplexDemo/CustomerService2/bin/Debug/CustomerService2.dll. ERR: Не удалось завершить настройку сборки (hr = 0x8007000b). Исследование прекращено.
Итак, теперь, когда я изменил платформу, библиотека обслуживания больше не запускалась. Так что теперь я застрял, и я искал некоторые решения.
Может ли кто-нибудь сказать мне, что происходит? Не думайте, что у кода есть ошибки, потому что это обычный ванильный WCF и до его работы. Код также работает при создании в установке x32
Пожалуйста, помогите мне
ли вы найти решение этой проблемы? – newman