【问题标题】:Publishing ASP.net website With LocalDB使用 LocalDB 发布 ASP.net 网站
【发布时间】:2017-12-21 21:24:13
【问题描述】:

我正在尝试在家庭网络上的另一台计算机上发布我的网站。我已经在那台计算机上设置了 IIS 和 SQL Server 2016 Express。我的开发笔记本电脑上的版本相同。当我运行该站点时,出现以下错误。我认为问题可能是我正在尝试使用 LocalDB。我经常在没有互联网连接的地方旅行。这就是为什么我认为最好在开发时使用 localDB。回到家后,我会发布到我的服务器。

最初 LocalDB 是在我的计算机上的一个远离我的项目的文件夹中创建的。所以我所做的就是将它移动到 app_data 以便在我发布时附加它。

我尝试了什么:

  1. 重新安装 Microsoft SQL Server 2016(确保已安装 LocalDB)
  2. 确保数据库实际上位于服务器上的 App_Data 文件夹中
  3. 更改了连接字符串以在 app_data 中查找数据库

任何建议都会很棒。

连接字符串:

<connectionStrings 
    <add name="IgorsSellersToolBoxDB" 
         connectionString="metadata=res://*/Models.ModelDB.csdl|res://*/Models.ModelDB.ssdl|res://*/Models.ModelDB.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source= LocalDB)\MSSQLLocalDB;attachdbfilename=|DataDirectory|\IgorsSellersToolBoxDB.mdf;integrated security=True;multipleactiveresultsets=True;connect timeout=30;application name=EntityFramework&quot;" 
         providerName="System.Data.EntityClient" />
</connectionStrings>

错误:

“/WebToolbox”应用程序中的服务器错误。

在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:50 - 发生本地数据库运行时错误。指定的 LocalDB 实例不存在。 )

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

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

来源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。`

【问题讨论】:

  • 根据堆栈跟踪,您似乎没有足够的权限,或者您的 PC 中没有运行 SQL Server。您可以通过转到,Services-> SQL server-> 右键单击​​ START 或 RESTART 来明确尝试。
  • 不要在生产环境中使用 localdb。将所有数据移动到 SQL Server 并在那里执行。还要在Sql server management studio中找出你的sql server的连接字符串
  • @steve 为什么使用 localdb 不适合生产?如果我将所有数据移动到 SQL Server,我如何在没有 Internet 的位置处理项目。我通常在没有连接的地方从事该项目,然后一旦我到达一个有互联网的地方,我就会发布该网站。这就是 localdb 对我如此有吸引力的原因。
  • @Igorski88 只需在代码准备好生产时复制并更新您喜欢的任何数据。 “LocalDB 是针对程序开发的 SQL Server Express 数据库引擎的轻量级版本”
  • @Steve 我期待这种类型的答案,但我想我希望有一个更简单的方法。那么我是否应该在每次我想发布的时候注释掉到 SQL 服务器的连接字符串并取消注释呢?反之亦然 W/localdb 连接字符串。有没有一种简单的方法可以将 localdb 数据复制到 SQL Server 中?

标签: c# sql-server asp.net-mvc localdb


【解决方案1】:

正如史蒂夫在 cmets 中提到的,我已经确认在生产中使用 localDB 是不受欢迎的。

解决方案: 在我的开发机器上使用 SQL Server,在生产服务器上使用单独的 SQL Server。我所要做的就是在我的 Web.Config 中有单独的连接字符串。

在您的 web.config 中,您可以在解决方案资源管理器中展开该文件,您将看到两个文件:

  • Web.Debug.Config
  • Web.Release.Config

这里有一个很好的答案很好地解释了它-->Using different Web.config in development and production environment

【讨论】:

    猜你喜欢
    • 2015-03-19
    • 2011-05-19
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多