У меня есть служба, которая использует EF для извлечения данных из базы данных SQL.
Модель EF находится в библиотеке классов. В библиотеке классов соединение настроено как:
<add name="APIC2CEntities"
connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;provider=System.Data.SqlClient;provider connection string="data source=MYSERVER;initial catalog=MYDB;user id=MYUSER;password=THEPASSWORD;multipleactiveresultsets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
На эту библиотеку классов ссылается проект службы WCF. В webconfig я контролирую соединение EF с помощью:
<add name="APIC2CEntities"
connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;provider=System.Data.SqlClient;provider connection string="data source=MYSERVER;initial catalog=MYDB;user id=MYUSER;password=THEPASSWORD;multipleactiveresultsets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
Когда моя служба работает в Кассини, данные извлекаются правильно. Когда служба работает под управлением IIS (Windows XP), соединение не устанавливается со следующим исключением:
Основной провайдер не удалось открыть Open
с внутренним исключением, говорящим мне:
{"Произошла ошибка, связанная с сетью или конкретным экземпляром, при установлении соединения с SQL Server. Сервер не был найден или недоступен. Убедитесь, что имя экземпляра правильное и что SQL Server настроен на разрешить удаленные подключения. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть подключение к SQL Server) "}
Я понимаю, что Cassini работает под моей зарегистрированной учетной записью, и что IIS работает под учетной записью IUSR_MYMACHINE, но мое соединение не является доверенным, поэтому не должно иметь значения ...
Как еще можно по-другому манипулировать или контролировать соединение EF между IIS и Cassini?
Спасибо
Mark