Я боролся с IIS последние несколько дней, и ошибка, которую генерирует IIS:
Исключение: System.Runtime.Serialization.SerializationException
Сообщение: не удалось найти сборку «FluentNHibernate, версия = 1.0.0.633, культура = нейтральный, PublicKeyToken = 8aa435e3cb308880».
Что странно, если я проверяю procmon, я могу наблюдать, как процесс IIS находит dll в каталоге, в котором я ожидал, что он найдет ее, а затем он продолжает поиск в других каталогах для той же самой dll. По какой-то причине он также ищет в PDB библиотеку DLL. DLL также существует во временном каталоге, который создает IIS:
C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ ws-sm \ bc2df7a7 \ 729516d \ assembly \ dl3 \ 42ab9d3b \ 00d491a3_3e6bcd01 \ FluentNHibernate.DLL
Таким образом, он явно смог скопировать dll в рабочее место, но сообщает, что не может ее найти.
Я проверил все свои файлы web.config, и для отладки компиляции во всех случаях установлено значение false, поэтому я удивлен, увидев, что он ищет pdbs.
Поиск в Google этой ошибки не дал ничего полезного.
Я использую Win2k8 x86 с IIS 7, и мой пул приложений интегрирован с ASP.NET v4.0.
Я наконец понял это, и это не было связано с IIS. Отправляю свой ответ на случай, если в будущем кто-то еще столкнется с подобной проблемой.
Моя проблема заключалась в том, что мне не удалось подключиться к одной из моих баз данных, и это привело к возникновению исключения. Каким-то образом (до сих пор не знаю, как) это было поймано одной вещью, а затем поймано IIS, который попытался сериализовать сообщение об ошибке, но не смог найти нужную DLL, поскольку в конечном итоге это было в другом домене приложений. В итоге я нашел эту проблему, подключив windbg к процессу w3wp и наблюдая, как он запускается.
Поэтому, если вы получили эту ошибку, попробуйте подключить windbg к своему процессу и посмотреть, какие ошибки возникают.
Это типичная проблема устранения неполадок .NET.
Пара вещей:
Я определенно хотел бы убедиться, что версия Fluent NHibernate DLL соответствует тому, что программное обеспечение ожидает запустить. Возможно, вам придется связаться с разработчиком / поставщиком, чтобы прояснить проблему. Скорее всего, это не проблема IIS, а проблема приложения.