5

我刚刚在 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数据库?

4

2 回答 2

4

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

所以像

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

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

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

于 2013-10-08T06:13:41.173 回答
4

你还有这个问题吗?另外,为什么 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>
于 2013-06-17T14:26:01.250 回答