2011-05-03 61 views
4

我有一个使用EF从SQL数据库检索数据的服务。实体框架“底层提供程序在打开时失败” - 卡西尼vs IIS

EF模型位于类库中。在类库中,连接配置为:

 <add name="APIC2CEntities" 
    connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=MYSERVER;initial catalog=MYDB;user id=MYUSER;password=THEPASSWORD;multipleactiveresultsets=True;App=EntityFramework&quot;" 
    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=&quot;data source=MYSERVER;initial catalog=MYDB;user id=MYUSER;password=THEPASSWORD;multipleactiveresultsets=True;App=EntityFramework&quot;" 
    providerName="System.Data.EntityClient" /> 

当我的服务是在卡西尼运行数据被正确检索。当服务IIS(Windows XP中)下运行的连接失败,出现以下异常:

The underlying provider failed on Open

与内部异常告诉我:

{"A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)"}

我明白,卡西尼号在我的记录中运行帐户,并且该IIS正在IUSR_MYMACHINE帐户下运行,但我的连接不受信任,所以此不应该问题...

EF如何以其他方式操纵或控制EF连接IIS和Cassini之间?

谢谢,
马克

+0

该问题似乎与EF没有关系......您可以直接使用ADO.NET打开连接吗? – 2011-05-03 09:17:13

+0

所有应该处理的事项都是进程标识和用于连接的凭证 - 除了标识以外,Cassini或IIS是否正在执行都没有区别 – BrokenGlass 2011-05-03 13:08:33

回答

3

我们这次决议是强行连接到使用TCP(在连接字符串中使用data source=tcp:MyServer),并启用TCP上的SQL盒(哎呀!)..

我仍然不知道卡西尼会议如何能够建立连接在IIS会议是不是:-S

马克

0

我认为这个问题仍然是在连接字符串中。如果您确定,请执行下列操作步骤和测试

  1. 打开空白记事本并保存为connectionString.UDL
  2. 开放的connectionString(只保存在步骤1)
  3. 在连接选项卡:类型的服务器名称(在我的情况下:DESKTOP-IDSLV81)或IP为XXX.XXX.XXX.XXX,1433其中1433是默认端口,使用相应的用户名和密码以及选择数据库(可用数据库在下拉列表中)
  4. 然后按测试连接如果成功按下确定按钮。
  5. 打开记事本中的connectionString.UDL文件。正确的连接字符串是存在的,并与web.config中的连接字符串进行比较
相关问题