Я выполнил следующие указания: http://splinter.com.au/blog/?p=156, пытаясь использовать более новую версию ODP.NET без установки клиента Oracle 11g. Пока я следил за всем, кроме перезапуска IIS.
Однако это вызвало некоторые проблемы, и мне действительно любопытно, почему. Если я пытаюсь использовать ODP.NET, меня встречает пустое исключение, возникающее при попытке соединения Oracle (например, ConnectExample.Open ()).
Но что самое любопытное: я не могу удалить oci.dll. Он говорит, что он используется. Что может быть с помощью этой DLL? Что именно ASP.NET делает с нативной dll, когда она находится в каталоге Bin? Я подумал, что это может быть связано с oci.dll, но если я использую dll аналогичным образом в настольном приложении WinForm, то oci.dll не блокируется, и я могу удалить его свободно.
Кроме того, после того, как я попытался использовать его, обычный System.Data.OracleClient перестал работать. Теперь он генерирует исключение, которое OCIEnvCreate возвращает с -1.
Я попытаюсь перезапустить IIS, и, надеюсь, это исправит это, но я хотел бы знать, что здесь происходит (и если это можно решить без перезапуска IIS). У кого-нибудь есть идея?
Редактировать: я пытался перезапустить IIS, но это не помогло
Редактировать # 2: Я не думаю, что сформулировал этот вопрос очень хорошо, но это было из-за того, что я предполагал, что перезапуск IIS будет работать. Теперь мне просто нужно знать, почему это не работает. В Googling для подобных проблем я встречал только 2 сообщения на форуме, в которых рассказывалось о моей конкретной проблеме: Oracle ODP.NET возвращает пустое исключение при попытке подключения. Вот ссылки на них:
http://kr.forums.oracle.com/forums/thread.jspa?threadID=632296
http://forums.oracle.com/forums/thread.jspa?threadID=549864
Корейская ссылка выше самая интересная. У них есть полная установка, которая заставляет меня подозревать, что моя проблема не с файлами или отсутствующими файлами. Интересно, что они имеют в виду под «производственными серверами, выбрасывающими пустые исключения, если выполняется вызов библиотеки OCI до установки ODP»?
Редактирование / обновление № 3: У нас есть сервер интрасети для нашего отдела, который я смог протестировать сегодня. Я добавил необходимые DLL в папку Bin, и все работало без перезапуска IIS. Я не спрашиваю Я попробую еще тестирование на этом сервере, чтобы посмотреть, смогу ли я повторить проблему
Редактирование # 4 (одиссея продолжается): я определил, что oraocci11.dll (DLL-интерфейс интерфейса вызовов C ++) изначально необходим ASP.NET (или библиотеке ODP.NET), чтобы даже найти DLL-файлы 11g клиента, после этого oraocci11.dll, по-видимому, никогда не будет использоваться снова и может быть удален. Не уверен, что это значит для моей проблемы, но так как это добавляет сюда базу знаний, я решил упомянуть об этом
Редактировать # 5: я добавил mfc71.dll и msvcr71.dll, 2 системных файла Windows, связанных с C / MFC, в каталог Bin, когда обнаружил, что они нужны для ODP.NET (или, по крайней мере, для клиент). Это, по крайней мере, заставило вещи остаться на старой знакомой ошибке «Клиент не совместим». Я удалил эти 2 DLL и, конечно же, вернулся к тем же ошибкам, что и выше. Однако добавление их назад не устраняет эти ошибки, поэтому мне придется снова выполнить сброс IIS.