Я реализую службу данных WCF, которая реализует следующий метод:
http://debugmode.net/2010/06/13/introduction-to-wcf-data-service-and-odata/
Я установил следующий бета компонент ODAC:
http://www.oracle.com/technetwork/topics/dotnet/downloads/oracleefbeta-302521.html
Когда я запускаю решение в Visual Studio 2010, оно отлично возвращает данные, когда я развертываю приложение в IIS 7, оно выдает следующее исключение:
Базовый поставщик не удалось открыть.
Я проверил строки подключения в обеих, они установлены одинаково, единственное, о чем я могу думать, я считаю, что это не проблема, это то, что клиентские компоненты Oracle устанавливают TNSNAMES.ora
и sqlnet.ora
в следующее местоположение:
Есть 2 для имени пользователя
C:\app\<username>\product\11.2.0\client_1\Network\Admin
C:\app\<username>\product\11.2.0\client_2\Network\Admin
и есть один для oraclebase -
C:\app\oraclebase\product\11.2.0\client_1\Network\Admin
Я скопировал рабочие файлы во все нужные места, на самом деле, я могу прекрасно подключиться через SQL Plus
Моя интуиция говорит мне, что пул приложений / удостоверение, под которым работает IIS, не загружает правильные значения конфигурации, но я изменил учетную запись пула приложений для запуска под -my- account.
Вот строки подключения, которые используются из приложения ASP.NET (на случай, если это поможет)
metadata=res://*/ENTITY_NAME.csdl|res://*/ENTITY_NAME.ssdl|res://*/ENTITY_NAME.msl;provider=Oracle.DataAccess.Client;provider connection string="DATA SOURCE=DATABASENAME;PASSWORD=PASSWORD;PERSIST SECURITY INFO=True;USER ID=USERNAME"
Кстати, у меня есть другая служба данных WCF на том же сервере, она указывает на экземпляр SQL и просто извлекает данные, была проблема с удостоверением в этом пуле приложений, но она была решена.
Кто-нибудь знает, что это может быть?
Примечание. Я также выполняю функции connection.open () и connection.close () для объектов в коде.