LINQ to SQL无法连接到数据库,但连接字符串很好

时间:2011-01-31 10:51:14

标签: asp.net-mvc linq-to-sql connection-string

我已经将MVC网站及其数据库部署到网络托管服务提供商。默认的ASPNET表和应用程序自定义的表共享同一个数据库。 Web配置中有两个连接字符串,一个用于ApplicationServices,另一个用于我的LINQ to SQL dbml。由于它们共享相同的数据库,因此我为两者使用相同的连接字符串。

应用程序服务功能似乎可以正常工作,因为我可以登录该站点。但是,返回控制器抛出异常,因为它这次尝试使用我的数据上下文。相同的连接字符串,但它给了我错误:

  

与网络相关或特定于实例的   建立一个错误时发生错误   连接到SQL Server。服务器   没找到或无法访问。   验证实例名称是否为   正确和SQL Server是   配置为允许远程   连接。 (提供者:命名管道   提供者,错误:40 - 无法打开   连接到SQL Server)

这当然在我的本地机器上都能正常工作。我非常想知道为什么LINQ to SQL无法连接有效的连接字符串。

1 个答案:

答案 0 :(得分:0)

LINQ to SQL dbml文件位于类库中,启动ASP.NET Web项目使用此库作为其数据层。当通过visual studio运行时,LINQ to SQL正在从类库的app.config读取它的连接字符串。发布Web项目时,包含依赖数据库,但不包括app.config。我现在明白,需要将完全限定的连接字符串手动复制到主项目的web.config中,它们会覆盖程序集的默认值。我遇到的问题是,由于缺少app.config并且web.config中没有连接字符串,至少没有完全合格的连接字符串,因此库恢复了它的开发默认值。