почему 32-битное значение вызывает исключение BadImageFormatExmat системы WCF? - PullRequest
0 голосов
/ 05 декабря 2018

Я опубликовал небольшое веб-приложение со службами WCF локально, используя файловую систему в Visual Studio Community 2017. Я разместил его локально, чтобы протестировать его, и заметил, что одна служба WCF не была вызвана, и вызвала исключение System.BadImageFormatExmat.Причиной была единственная переменная id из метода типа Int32.Платформа решения в Configuration Manager представляет собой «Смешанные платформы» с любым процессором.Так что проблемы не было.Я последовал решению bluwater2001, здесь , включив 32-битные приложения в пуле приложений.Однако мой вопрос остается: почему 32-битная переменная вызвала такую ​​ошибку, тогда как мое веб-приложение было создано для любых процессоров и смешанных платформ?И почему было необходимо включить 32-разрядные приложения в пуле приложений в IIS?

1 Ответ

0 голосов
/ 05 декабря 2018

Это не имеет ничего общего с типом ваших переменных / параметров.

Если вы выберете AnyCPU, ваш код может работать на любой платформе.Он будет компилироваться в 32-битный код на 32-битной машине и в 64-битный код на 64-битной машине.

Если ваша сборка выполняется как 32-битный процесс, она не может загрузить 64-битную сборку и наоборот.Если он пытается загрузить сборку, которая не соответствует процессу, вы получаете исключение BadImageFormatException.

...