【问题标题】:Issue when deploying an ASP.NET MVC + LocalDB application部署 ASP.NET MVC + LocalDB 应用程序时的问题
【发布时间】:2013-12-09 17:17:40
【问题描述】:

我已经在服务器上部署了我的 ASP.NET MVC 5 应用程序,但它在使用 localdb 的每个页面上都崩溃了。

但我复制了.mdf 文件所在的App_Data 文件夹。我什至在机器上安装了 SQL Server 2012 Express。

但每次我遇到同样的错误。

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

异常详细信息:System.ComponentModel.Win32Exception: Le fichier spécifié est introuvable

来源错误:

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

堆栈跟踪:

[Win32Exception (0x80004005): Le fichier spécifié est introuvable]
[SqlException (0x80131904):建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供程序:SQL 网络接口,错误:52 - 无法找到本地数据库运行时安装。验证 SQL Server Express 是否已正确安装并且本地数据库运行时功能已启用。)]
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常, Boolean breakConnection, Action`1 wrapCloseInAction) +5352431

抱歉,尽管我将 ui 设置为 us-english,但其中一部分是法语。

web.config 文件如下所示:

<connectionStrings>
   <add name="ConnectionString" 
        connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=C:\inetpub\wwwroot\MygLogWeb\App_Data\Database.mdf;Integrated Security=True" 
        providerName="System.Data.SqlClient"/>
</connectionStrings>

以前是这样的:

<add name="ConnectionString" 
     connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True" 
     providerName="System.Data.SqlClient"/>

【问题讨论】:

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


    【解决方案1】:

    这是因为 LocalDb 不适合生产使用。

    见文章:Creating an Entity Framework Data Model for an ASP.NET MVC Application

    具体来说,本文中的这段文字:“SQL Server Express 通常不用于生产 Web 应用程序。特别不建议将 LocalDB 用于 Web 应用程序的生产环境,因为它不是为与 IIS 一起工作而设计的。”

    因此,更改您的 connectionString 值以使用真正的 sql server 数据库,您应该一切顺利!

    【讨论】:

    • 快速发展。测试。就像 Visual Studio 可以按需启动新的 Web 服务器,而不是强迫您首先设置 IIS 以查看您的应用程序运行。
    • 如果您使用的是生产数据库怎么办?
    【解决方案2】:

    我遇到了同样的问题,在这里 (Is it normal to use LocalDb in production?) 找到了解决方案。 @Krzysztof Kozielczyk@ 提供 2 篇文章:firstsecond。 第一个技巧足以解决我的问题。
    其实我只是添加到 C:\Windows\System32\inetsrv\config\applicationHost.config

    <add name="ASP.NET v4.0" autoStart="true" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated">
         <processModel identityType="ApplicationPoolIdentity" loadUserProfile="true" setProfileEnvironment="true" />
    </add>
    

    顺便说一句,我的连接字符串看起来像你的第二个(带有“|DataDirectory|\Database.mdf”)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多