2012-03-16 90 views
0

試圖在我的MVC3應用程序中使用安全功能並創建窗體身份驗證我使用了打開ASP.Net網站管理工具的Project-ASP.Net配置。 我去了安全角色管理,添加了一個角色,並試圖管理附加到它的用戶。當試圖檢查一個盒子附加用戶 http://i.stack.imgur.com/WJV74.png確保應用程序與用戶角色安全錯誤

我有一個錯誤。

An error was encountered. Please return to the previous page and try again. 

The following message may help in diagnosing the problem: The user 'user' was not found. at System.Web.Administration.WebAdminPage.CallWebAdminHelperMethod(Boolean isMembership, String methodName, Object[] parameters, Type[] paramTypes) at ASP.security_roles_managesinglerole_aspx.EnabledChanged(Object sender, EventArgs e) at System.Web.UI.WebControls.CheckBox.OnCheckedChanged(EventArgs e) at System.Web.UI.WebControls.CheckBox.RaisePostDataChangedEvent() at System.Web.UI.WebControls.CheckBox.System.Web.UI.IPostBackDataHandler.RaisePostDataChangedEvent() at System.Web.UI.Page.RaiseChangedEvents() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

可能是在Web.config中錯誤嗎?

<?xml version="1.0"?> 
<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=152368 
    --> 

<configuration> 
    <connectionStrings> 
    <add name="MusicStoreDB" 
    providerName="System.Data.SqlClient" 
    connectionString="Data Source=my-pc;Initial Catalog=MusicStoreDB;User Id=usr;Password=1;" /> 
    <add name="SecDB" 
    providerName="System.Data.SqlClient" 
    connectionString="Data Source=my-pc;Initial Catalog=SecDB;User Id=usr;Password=1;" /> 
    </connectionStrings> 

    <appSettings> 
    <add key="webpages:Version" value="1.0.0.0"/> 
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
    </appSettings> 

    <system.web> 
    <authorization> 
     <allow roles="adm" /> 
     <allow roles="adm" /> 
    </authorization> 
    <globalization culture="en-US" /> 
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     </assemblies> 
    </compilation> 

    <authentication mode="Forms"> 
     <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
    </authentication> 

    <membership> 
     <providers> 
     <clear/> 
     <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="SecDB" 
      enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" 
      maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" 
      applicationName="/" /> 
     </providers> 
    </membership> 

    <profile> 
     <providers> 
     <clear/> 
     <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="SecDB" applicationName="/" /> 
     </providers> 
    </profile> 

     <roleManager enabled="true" defaultProvider="DefaultRoleProvider"> 
      <providers> 
       <add connectionStringName="SecDB" applicationName="/" name="DefaultRoleProvider" 
        type="System.Web.Providers.DefaultRoleProvider" /> 
      </providers> 
     </roleManager> 

    <pages> 
     <namespaces> 
     <add namespace="System.Web.Helpers" /> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Web.WebPages"/> 
     </namespaces> 
    </pages> 
    </system.web> 

    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 

    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

幫助,請

+0

固定。 必須使用 <除去名稱= 「AspNetSqlRoleProvider」/> <添加的connectionStringName = 「SecureDB」 的applicationName = 「/」 名稱= 「AspNetSqlRoleProvider」 型=「System.Web.Security.SqlRoleProvider」/> 謝謝! – versus 2012-03-16 07:55:01

回答

1

固定。

必須使用

<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider"> 
     <providers> 
     <remove name="AspNetSqlRoleProvider"/> 
     <add connectionStringName="SecureDB" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" /> 
     </providers> 
    </roleManager> 

謝謝!