2012-06-22 35 views
8

Tôi đang cố gắng bật đăng nhập bằng mẫu mặc định MVC 4 RC. Tôi đã làm nó theo cùng một cách như trong MVC 3, Aspnet_regsql.exe -> SQL server. Sau đó, tôi đã tạo chuỗi kết nối tới máy chủ SQL.MVC 4 RC - Aspnet_regsql.exe

Khi tôi cố gắng đăng ký một người dùng mới tôi có được điều này:

Server Error in '/' Application. 

Invalid column name 'ApplicationId'. 
Invalid column name 'UserName'. 
Invalid column name 'ApplicationId'. 
Invalid column name 'UserId'. 
Invalid column name 'UserName'. 
Invalid column name 'IsAnonymous'. 
Invalid column name 'LastActivityDate'. 

Lỗi trong AccountController:

   Line 85: // Attempt to register the user 
       Line 86: MembershipCreateStatus createStatus; 
Error here -> Line 87: Membership.CreateUser(model.UserName, model.Password, model.Email, passwordQuestion: null, passwordAnswer: null, isApproved: true, providerUserKey: null, status: out createStatus); 
       Line 88: 
       Line 89: if (createStatus == MembershipCreateStatus.Success) 

Tôi đã cố gắng để google lỗi này nhưng không may mắn cho đến nay. Có cách nào khác tôi nên làm trong MVC 4 không?

+0

Bạn đã tìm thấy giải pháp chưa? Nếu tôi chạy trình lược tả SQL, các câu lệnh SQL được tạo bởi 'DefaultMembershipProvider' sử dụng các tên bảng khác với' aspnet_regsql' ('Applications' thay vì' aspnet_Applications' và 'Users' thay vì' aspnet_Users'). Một giải pháp là đổi tên các bảng cho phù hợp với nhà cung cấp thành viên hoặc viết nhà cung cấp tư cách thành viên tùy chỉnh cho MVC. –

Trả lời

10

Tôi đã nhận được lỗi tương tự vì tôi đã sử dụng bảng thành viên từ aspnet_regsql.exe phiên bản 2.x. Tôi đã chạy tệp thực thi aspnet_regsql.exe trong thư mục phiên bản 2.x và đã gỡ cài đặt các bảng. Sau đó, với các nhà cung cấp phổ quát mới, bạn không cần phải sử dụng thực thi ở trên nữa, các bảng được tạo ra khi bạn kết nối lần đầu tiên.

Bài viết này đi vào chi tiết hơn về sự khác biệt giữa aspnet_Memembership cũ so với nhà cung cấp toàn cầu.

Stronger Password Hasing Net

Những điểm chính từ bài báo:

Thứ nhất, có khôngaspnet_regsql, bạn chỉ cần đảm bảo chuỗi kết nối của bạn được thiết lập và tài khoản có quyền DBO (không lo lắng, nó không phải theo cách này), sau đó chạy ứng dụng và cố gắng thực hiện bất kỳ hành động nào khiến nhà cung cấp thành viên nhấn DB (nghĩa là đăng nhập - không quan trọng là không có tài khoản).

Thats tất cả là có nó.

+0

"Thứ nhất, không có aspnet_regsql nữa, bạn chỉ cần đảm bảo chuỗi kết nối của bạn được đặt ..." và mọi thứ hoạt động hoàn hảo :) Không còn công cụ regsql nữa! Cảm ơn bạn rất nhiều :) – judehall

+0

Vấn đề tôi có với thực tế là không có tương đương aspnet_regsql.exe cho khung công tác System.Web.Providers mới, là tôi không thể tạo lược đồ db và sau đó gieo giống thành viên với người dùng và vai trò quản trị viên ƯU TIÊN cho phép người dùng công khai đăng ký. Tôi đã xây dựng MvcInstaller (NuGet và github) và nó sử dụng aspnet_regsql.exe để cài đặt hệ thống Membership cho các quản trị viên. Điều này không cho phép tôi cập nhật thành phần của mình cho hệ thống mới. Đó là bực bội. – Kahanu