1

我在我的开发机器(Windows 7 Ultimate、IIS 7.5 和 Visual Studio 2010 Pro)上运行了一个 asp.net 应用程序。我还安装了 SQL Server 2008 R2,当然还有与 VS 2010 Pro 一起安装的 SQL Server Express 2008。

我运行了 ASP.NET 配置向导,为我的应用程序创建了一些用户和滚动。因此,在 App_Data 文件夹中创建了一个 ASPNETDB.MDF 数据库文件。

我现在面临的问题是,我的应用程序的 web.config 中缺少上述 SQL Server Express 数据库的连接字符串,而成员资格元素也是如此。

但我的应用程序运行良好。我可以登录、注销等。劳斯莱斯也按预期工作。

(我还想指出,我的应用程序还可以访问本地计算机上 SQL Server 2008 R2 上的数据库,它也可以在生产服务器上执行相同的操作。)

我将我的应用程序上传到生产服务器,在那里创建会员数据库(SQL Server 2008),传输数据等等。然后,我在 web.config 文件中为该 SQL Server 数据库添加了一个连接字符串。但是,如果我尝试登录,我将无法连接到 SQL Server。错误如下: 建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Data.SqlClient.SqlException:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)。

我认为(虽然我不确定)我的应用程序试图访问远程主机上的 SQL Server Express。这是因为连接字符串嵌入其中。

如果我说清楚了,那么我的问题是:如何配置连接字符串或在哪里找到它?因为它不在 web.config 中。

我是 ASP.NET 和 SQL Server 的新手。任何帮助将不胜感激。谢谢。

这是web.config

<configuration>
<connectionStrings>
<add name="somename" connectionString="Data Source=remotehost;Initial Catalog=remotedb;User Id=username;Password=password"providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<customErrors mode="Off"></customErrors>
<roleManager enabled="true" />
<authentication mode="Forms" />
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0" />
</system.web>
</configuration>

这就是我的 web.config 的全部内容。

上面的连接字符串是我为远程服务器添加的。

4

1 回答 1

1

我找到了我的问题的答案。如果您从头开始创建网站(在我的情况下),则 ASPDBNET.MDF 的连接字符串通常不会出现在 web.config 中。

应用程序使用 machine.config 文件中定义的机器范围连接字符串。这被命名为“LocalSqlServer”。

通常,此 LocalSqlServer 连接字符串默认以本地 SQL Server Express 为目标。

因此,它在使用完整 SQL Server 的远程主机上失败。

要将您的网站上传到远程服务器,需要在 web.config 中进行一些调整以指向通常是 SQL Server 的新服务器。

为此,将新的连接字符串添加到您的 web.config 文件并将其命名为 LocalSqlServer。除了名称之外,通常添加其他所有内容,例如数据源、初始目录等。

要使其在远程主机上工作,请在打开的 connectionStrings 元素之前添加一个 clear 元素。这是远程 SQL Server 的连接字符串的外观。

<connectionStrings>
    <clear/>
    <add name="LocalSqlServer" connectionString="Data Source=remotehost;Initial Catalog=remoteDB;User Id=username;Password=password" providerName="System.Data.SqlClient" />
</connectionStrings>

你完成了。这就是我为我从头开始创建的 ASP.NET 网站所做的。现在它的会员登录、注销、用户和滚动等都运行良好。

谢谢阅读。

于 2012-09-01T16:39:06.030 回答