0

オンラインで回答が見つからないエラーが発生しました。IIS の役割と ASP.NET の役割サービスを使用して、新しい仮想 Server 2008 R2 Standard ボックスを作成しました。サーバーは本番用です。Web サイトをサーバーにコピーしましたが、機能しなくなりました。具体的には、RoleManagerModule が NullReferenceException をスローしています。これは任意の *.aspx ページで発生しますが、robots.txt などの静的ページでは発生しません。このエラーは、承認規則がないページでも発生します。アプリケーション イベント ログのエラーからの関連スニペットを次に示します。

Exception information: 
    Exception type: NullReferenceException 
    Exception message: Object reference not set to an instance of an object. 

Request information: 
    Request URL: ******** 
    Request path: / 
    User host address: ******** 
    User:  
    Is authenticated: False 
    Authentication Type:  
    Thread account name: ******** 

Thread information: 
    Thread ID: 8 
    Thread account name: ******** 
    Is impersonating: False 
    Stack trace:    at System.Web.Security.RoleManagerModule.OnEnter(Object source, EventArgs eventArgs)
   at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

これは、ロール マネージャーが web.config で有効になっている場合にのみ発生します。

<roleManager defaultProvider="EWRO" enabled="true">

enabled 属性を削除するか false に設定すると、aspx ページは適切に応答します。ウェブサイトが現在実行されているサーバーの構成とインストールされているサービスを可能な限り一致させました。カスタム ロール プロバイダーがあることに気付くかもしれませんが、defaultProvider 属性を削除しても同じ例外が発生します。とにかく AspNetSqlRoleProvider は失敗しますが、その時点には到達しません。

解決策または解決策を見つけるための手順をいただければ幸いです。

4

2 に答える 2

0

最終的にIISサーバーの役割を再インストールすると、問題が修正されました。申し訳ありませんが、この問題を見つけた他の人にはこれ以上の助けはありません。

于 2012-07-26T18:05:00.097 に答える
0

このエラーは、通常、匿名認証が有効になっている場合に、RoleManager がユーザー ID を見つけられないために発生します。

それを解決するには、編集してみてください

c:\windows\system32\inetsrv\config\applicationHost.config

RoleManagerModule の前に DefaultAuthenticationModule を配置します

<add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" preCondition="managedHandler" />
<add name="RoleManager" type="System.Web.Security.RoleManagerModule" preCondition="managedHandler" />
于 2020-03-26T11:05:59.997 に答える