2012-10-11 50 views
0

所以。ASP .NET MVC 4遠程數據庫上的鍵'attachdbfilename'的值無效

起初,我加入連接字符串到遠程服務器MSSQL Server 2008 R2中,10.50.1600:

<add name="MySQLConnection" connectionString="server=xxx.x.xx.xx;initial catalog=xxxxx;user id=sa;password=xxxxxxxxxxx;"/> 

然後,我配置了在服務器端使用aspnet_regsql遠程數據庫在.NET 4.0中添加自定義成員(因爲inbuild不想與WSAT合作)。

<membership 
    defaultProvider="SqlProvider" 
    userIsOnlineTimeWindow="20"> 
    <providers> 
    <clear /> 
    <add name="SqlProvider" 
     type="System.Web.Security.SqlMembershipProvider" 
     connectionStringName="MySQLConnection" 
     enablePasswordRetrieval="false" 
     enablePasswordReset="true" 
     requiresQuestionAndAnswer="true" 
     passwordFormat="Hashed" 
     applicationName="/" /> 
    </providers> 
</membership> 

所以,現在我可以配置我的WSAT應用程序,但不能在登錄時輸入或註冊頁面,出現錯誤:

System.ArgumentException: Invalid value for key 'attachdbfilename'. 

Line 32:      using (var context = new UsersContext()) 
Line 33:      { 
Line 34:       if (!context.Database.Exists()) 
Line 35:       { 
Line 36:        // Create the SimpleMembership database without Entity Framework migration schema 

解決:

的問題這裏:

public class UsersContext : DbContext 
{ 
    public UsersContext() 
     : base("DefaultConnection") 
    { 
    } 

    public DbSet<UserProfile> UserProfiles { get; set; } 
} 

我不需要自定義會員等.-只是爲我的連接字符串設置當前的DefaultConnection名稱,或者在這裏更改爲MySQLConnectionString。

回答

0

attachdbfilename對遠程數據庫無效。它表示您的連接名稱爲MySQLConnection,但在您的成員資格中,您指定了一個「dbSkazkiEntities」連接字符串。

是否有多個連接字符串?

編輯:

哇。好的,你有很多事情搞砸了。首先,你正在使用SimpleMembership。 SimpleMembership不使用Web.Config中配置的成員資格提供程序。它絕對沒有。

其次,SimpleMembership被配置在過濾器\ InitializeSimpleMembershipAttribute.cs文件中,有這樣一行:

WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", 
    "UserName", autoCreateTables: true); 

第一個參數告訴SimpleMembership要使用的連接字符串,它被稱爲DefaultConnection。 DefaultConnection是machine.config中定義的回退連接,並且此連接默認使用了一個localdb,它具有attachdbfilename屬性。

您需要將上面的行更改爲您的MySQLConnection,而不是您創建的MembershipProvider。

接下來是UsersContext也使用默認連接字符串定義。改變這一點。

+0

在我的例子中,你在哪看到attachdbfilename?我不使用它,我使用MSSQL – user1612334

+0

我認爲他的意思是MySQLConnection,因爲它是我的,而不是MySQL。 – Gromer

+0

Yeap,我測試過 - 但是,我改回到MySQLConnection,它仍然不起作用 – user1612334

相關問題