7

(属性)で false に設定された値を表示する 1 つの aspx ページ ( Test.aspx) を持つ単純な Web サイトがあります。Roles.EnabledWeb.configroleManager@enabled

テスト.aspx:

<%@ Page Language="C#" %>
<%= Roles.Enabled %>

Web.config:

<?xml version="1.0"?>
<configuration>
    <system.web>
      <roleManager enabled="false" />
    </system.web>
</configuration>

これは以下を出力します:

間違い

これは予想されます。

ただし、別のファイル (カミソリ ページ) を追加すると、たとえばTest.cshtml内部にコンテンツがない (0 B) と、aspx ページが突然次のように出力されます。

真実

サイトからかみそりのページを削除しても、出力は変更されません。アプリケーションプールをリサイクルする必要があり、再び出力されますFalse(期待される結果)。

MVCモジュール/ハンドラー ファクトリが何らかの理由で値を変更しているようです。

MVCランタイムにそれを行わないようにするにはどうすればよいですか?

4

2 に答える 2

1

シンプル メンバーシップを有効にするキーは AppSetting ですenableSimpleMembership(デフォルトはtrue?)。

どうやら、MVC プロジェクトが開始されると、ルーチンがこの設定が に設定されているかどうかをチェックしfalseます。適用されていない場合SimpleMembershipProvider- または ASP.NET を試してみてください - どういうわけかこのように

この動作を無効にするには、 に設定しfalseます。

<appSettings>
  <add key="enableSimpleMembership" value="false" />
</appSettings>

この発言PreApplicationStartCodeは WebMatrix で見つけました。ほとんどの MVC バージョンで同様の動作があると思います。

ASP.NET Web ページ Web サイトで SimpleMembershipProvider クラスと WebSecurity クラスを使用するには、Web.config ファイルの appSetting セクションでenableSimpleMembershipを true に設定します。(または、 enableSimpleMembership の既定値が true であるため、enableSimpleMembershipWeb.config ファイルから 除外します。) シンプル メンバーシップが有効になっている場合、SimpleMembershipProvider は SqlMembershipProvider を置き換えますが、InitializeDatabaseConnection() メソッドの呼び出しによって初期化されるまで呼び出されません。

于 2013-08-12T08:46:35.977 に答える
0

このキーを設定してみてください。基本的にsimplemembershipがオンになっているため、ロールが有効になっています

于 2012-09-16T20:46:05.723 に答える