Theo nhận xét của bạn, có vẻ như bạn chưa định cấu hình rõ ràng một nhà cung cấp vai trò cho trang web của mình.
Nếu tất cả những gì trong web.config của bạn là:
<roleManager enabled="true" />
Sau đó, bạn đang dựa vào các nhà cung cấp mặc định đã khai báo thêm cấu hình phân cấp (machine.config, global web.config, v.v.)
Trong machine.config, bạn có thể có một cái gì đó như:
<roleManager>
<providers>
<add name="AspNetSqlRoleProvider"
connectionStringName="LocalSqlServer"
applicationName="/"
type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<add name="AspNetWindowsTokenRoleProvider"
applicationName="/"
type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
</roleManager>
Như bạn có thể thấy, nhà cung cấp đầu tiên được định cấu hình để sử dụng một Chuỗi kết nối được gọi là LocalSqlServer - cũng thường được khai báo trong machine.config:
<add name="LocalSqlServer"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient"/>
Và điều này được thiết kế để sử dụng cơ sở dữ liệu dựa trên tệp cục bộ sẽ được tạo nếu nó chưa tồn tại.
Vì vậy, để có được các vai trò hoạt động trên trang web của bạn, bạn nên cải tiến web.config gốc của mình thành một cái gì đó như:
<roleManager enabled="true">
<providers>
<clear />
<add name="AspNetSqlRoleProvider"
connectionStringName="YourConnectionStringName"
applicationName="/"
type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
</roleManager>
Việc sử dụng phần tử