1

最初にエンティティフレームワークコードを使用してデータベースを設定しました。私はすべてのasp.netユーザーロール管理のものをすでに設定しています。しばらく使用しているユーザーが1人いて、正常に機能しています。別のユーザーを追加しただけで、正常にログインできます。ロールを設定したい(管理者とユーザーの2つに名前を付けました)。ロールは正常に設定されていますが、ユーザーをロールに追加しようとすると、次のエラーが発生します(webadminツールを使用しています)。

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

The following message may help in diagnosing the problem: The user 'userName' 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構成を更新しようとしましたが、機能しませんでした。これが私の現在のweb.config設定です:

<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
  <providers>
    <remove name="DefaultRoleProvider"/>
    <add connectionStringName="NerdlyContext" applicationName="/"
      name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
</roleManager>

SSMSを使用すると、ユーザーテーブルとロールテーブルの両方が正しく入力されていることがわかります。そして、UsersInRolesテーブルがありますが、空です。

これは、.net4.0を使用するasp.netMVC4アプリケーションです。

これが完全なサニタイズされたweb.configです

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.3.1.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<remove name="LocalSqlServer"/>
<add name="LocalSqlServer" providerName="System.Data.SqlClient" connectionString="Data Source=tcp:sql2k804.discountasp.net;Initial Catalog=boobs;User ID=boobs;Password=boobs;" />
</connectionStrings>
<appSettings>
<add key="webpages:Version" value="2.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime />
<machineKey />
<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
<pages controlRenderingCompatibilityVersion="4.0">
  <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.Optimization" />
    <add namespace="System.Web.Routing" />
    <add namespace="System.Web.WebPages" />
  </namespaces>
</pages>
<profile defaultProvider="DefaultProfileProvider">
  <providers>
    <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="LocalSqlServer" applicationName="/" />
  </providers>
</profile>
<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <add connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="NerdlyThings" name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
  <providers>
    <add connectionStringName="LocalSqlServer" applicationName="/" name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
</roleManager>
<sessionState mode="InProc" customProvider="DefaultSessionProvider">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="LocalSqlServer" />
  </providers>
</sessionState>

また、古いSQLプロバイダーを使用するように変更すると、スキーマのバージョンが気に入らないという別のエラーが表示されます。

4

0 に答える 0