【问题标题】:SQL Server Express database file auto-creation error in MVC 4 - But i DON'T want to use SQL Server ExpressMVC 4 中的 SQL Server Express 数据库文件自动创建错误 - 但我不想使用 SQL Server Express
【发布时间】:2013-04-08 22:00:08
【问题描述】:

我刚刚在 ASP.Net MVC 4 中部署了一个新应用程序。我使用的是 SQL Server 2008 R2(不是 SQL Express)。

前 10 分钟运行良好,然后我对代码稍作改动并重新部署。

现在,每当我尝试访问使用 SimpleMembership 的页面时,都会收到以下错误:

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

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

SQLExpress 数据库文件自动创建错误:
连接字符串使用应用程序 App_Data 目录中的数据库位置指定本地 Sql Server Express 实例。提供者试图自动创建应用程序服务数据库,因为提供者确定该数据库不存在。要成功检查应用服务数据库是否存在并自动创建应用服务数据库,必须满足以下配置要求:

但是,我确实使用 SQL Server Express。在我的web.config 中,我将所有连接字符串设置如下:

<add name="ApplicationServices" 
     connectionString="Server=myServer;Database=myDB;User Id=myUserID;Password=myPWD;" 
     providerName="System.Data.SqlClient" />

<add name="ApplicationServices" 
     connectionString="Server=myServer;Database=myDB;User Id=myUserID;Password=myPWD;" 
     providerName="System.Data.SqlClient" />

为什么一直尝试创建 SQL Server EXPRESS 数据库?

【问题讨论】:

  • 连接字符串名称需要与您的数据库上下文相同。见stackoverflow.com/questions/5346926/…
  • 对不起,我可能误解了您的问题。我假设您首先使用的是 EF 代码。
  • 你解决了吗?我面临完全相同的错误..

标签: asp.net-mvc ef-code-first


【解决方案1】:

当我遇到这个错误时,结果很简单。我终于发现在我的 _Layout.cshtml 中我引用了 User.IsInRole("role") 但在 Request.isAuthenticated 之后。我的代码看起来像@if (Request.isAuthenticated &amp;&amp; User.IsInRole("role"))。所以基本上如果我没有在主页上签名,因为它不会遍历IsInRole() 调用(这需要初始化简单的成员资格,否则我会得到你在这里提到的错误。所以基本上我需要确保使用扩展 _Layout 文件的视图并可能拥有未经身份验证的用户的每个控制器都需要有一个 [InitializeSimpleMembership]。或者是初始化简单成员的各种方法之一。

类似

namespace ProjectName.Controllers
{
    [InitializeSimpleMembership]
    public class HomeController : Controller {
...

另外,我经常 Ctrl + F5 启动应用程序,然后使用“重建解决方案”。当我刷新一个不是根主页的页面时,我会收到错误,直到我调用根主页。到那时,一切都会重新开始。

希望这会对您或某人有所帮助。我撞了头至少一两个小时。

【讨论】:

    【解决方案2】:

    你还有这个问题吗?另外,为什么 ApplicationServices 列出了两次?

    不久前我遇到了同样的事情。我在 web.config 中缺少成员资格和角色的配置。

    <membership defaultProvider="AspNetSqlMembershipProvider">
      <providers>
        <clear />
        <add name="AspNetSqlMembershipProvider"
             type="System.Web.Security.SqlMembershipProvider"
             connectionStringName="ApplicationServices"
             enablePasswordRetrieval="false"
             enablePasswordReset="true"
             requiresQuestionAndAnswer="false"
             requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5"
             minRequiredPasswordLength="6"
             minRequiredNonalphanumericCharacters="0"
             passwordAttemptWindow="10"
             applicationName="Test" />
      </providers>
    </membership>
    <roleManager enabled="true" defaultProvider="SqlRoleManager">
      <providers>
        <add name="SqlRoleManager"
             type="System.Web.Security.SqlRoleProvider"
             connectionStringName="ApplicationServices"
             applicationName="Test" />
      </providers>
    </roleManager>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-25
      相关资源
      最近更新 更多