आपकी टिप्पणी के अनुसार, ऐसा लगता है कि आपने अपनी साइट के लिए भूमिका प्रदाता को स्पष्ट रूप से कॉन्फ़िगर नहीं किया है।
अगर आपके web.config में वह सब कुछ है:
<roleManager enabled="true" />
फिर आप कॉन्फ़िगरेशन पदानुक्रम (मशीन.कॉन्फ़िग, वैश्विक वेब.कॉन्फ़िगर, आदि) को आगे घोषित डिफ़ॉल्ट प्रदाताओं पर भरोसा कर रहे हैं
Machine.config में आपको शायद कुछ ऐसा मिल गया है:
<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>
जैसा कि आप देख सकते हैं, पहला प्रदाता लोकलएसक्लसेवर नामक कनेक्शनस्ट्रिंग का उपयोग करने के लिए कॉन्फ़िगर किया गया है - जिसे आमतौर पर मशीन में भी घोषित किया जाता है। कॉन्फिग:
<add name="LocalSqlServer"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient"/>
और यह एक स्थानीय फ़ाइल आधारित डेटाबेस का उपयोग करने के लिए डिज़ाइन किया गया है जिसे बनाया जाएगा यदि यह पहले से मौजूद नहीं है।
इसलिए अपनी साइट पर भूमिकाएं काम करने के लिए, आपको अपने रूट web.config को कुछ इस तरह संशोधित करना चाहिए:
<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>