2010-02-14 76 views
2

我设立一个会员供应商,作为一个结果,我收到以下错误消息:ASP.NET成员设置 - 数据库问题

An attempt to attach an auto-named database for file 

C:\用户\ Mcoroklo \桌面\ Programmering \ Private Projekter \ ASP.NET \ Helpdesk \ Version4 \ HelpDesk \ ClientSite \ App_Data \ ASPNETDB.mdf 失败。同名数据库 存在,或指定的文件不能被打开,或位于UNC共享上。

我是新成立的会员,所以我不能否认真正重要的东西是失踪! :-)

我很确定这与我的连接字符串和/或SQL成员资格提供程序有关。我有以下安装在我的web.config:

我的连接字符串:

<connectionStrings> 
<add name="MembershipServer" connectionString="Server=.\SQLExpress;AttachDbFilename=|DataDirectory|\ASPNETDB.mdf; Trusted_Connection=Yes;"/> 

我的SQL提供商

<membership defaultProvider="AspNetSqlProvider"> 
    <providers> 
    <clear/> 
    <add connectionStringName="MembershipServer" 
     name="AspNetSqlProvider" 
     applicationName="/" 
     type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    </providers> 
</membership> 

我的身份验证和授权:

<authentication mode="Forms"> 

    <forms name=".ASPXFORMSAUTH" loginUrl="Site/Login.aspx" 
     cookieless="UseCookies" > 
    </forms> 
</authentication> 

<authorization> 
    <deny users="?"/> 
</authorization> 

我的网站的文件结构是我在我的目录中有两个本地数据库。成员之一(ASPNETDB.MDF)是我用连接字符串指出的。我使用ASP.NET工具来创建它。

我通过LINQ TO SQL类连接的另一个数据库位于不同的项目中(使用层图层)。

非常感谢!

+1

你有使用其他程序打开数据库吗? – Shoban 2010-02-14 19:30:43

+0

你在你的本地开发环境中运行这个吗? – Brettski 2010-02-14 19:31:11

+0

好像当你不需要时你工作太辛苦。从新的网站开始并运行配置。在您熟悉基于提供者的成员资格功能和NEED来自定义行为之前,不需要通过复制默认行为来混淆事情。我有道理吗?例如您提供的值表明您实际上应该使用machine.config中的默认配置。 – 2010-02-14 19:45:01

回答

0

尝试数据库名称之前移除\。

AttachDbFilename = | DataDirectory目录| ASPNETDB.MDF

代替:

AttachDbFilename = | DataDirectory目录| \ ASPNETDB.MDF

哦,又一想,你是SQL Express,装在机器上,对吗?

1

Visual Studio将为您初始化所有这些。你正在接近它。它尚未为您创建和配置该数据库。

删除连接字符串元素,成员元素,认证元素和授权元素。

或更好开始用新的Asp.Net应用

然后单击项目(或网站)>天冬氨酸。net配置并按照步骤操作。

否则您将需要使用aspnet_reqsql.exe创建和配置您自己的数据库。

0

请记住,machine.config定义了一个名为“LocalSqlServer”的连接字符串,默认情况下,您的应用程序将使用该字符串。

要解决该问题,无论是显式删除这样的名字:

<connectionStrings> 
    <remove name="LocalSqlServer" /> 
    <!-- your new connection string here --> 
</connectionStrings> 

或使用明确的,但我没有测试它:

<clear/> 

通常我做什么,只是覆盖LocalSqlServer,所以我的连接字符串被命名为相同的,似乎可以解决大多数问题。

就像其他人提到的那样,当您使用ASP.NET站点管理器设置您的应用程序时,您应该为其添加ASPNETDB。

+0

试了两个。但.Net 4的machine.config文件覆盖了更改。所以,不好。 – 2011-02-18 23:10:24

+0

所有本地的web.config应该覆盖机器级别的配置,至少它总是以我的经验。我会仔细检查你的标签是否都在相同的地方,并且没有拼写错误。重新启动应用程序池也不会伤害。 – kamranicus 2011-02-22 04:34:03