はIIS7.5への私のウェブサイトを展開した私は1つの奇妙な行動を見つけた:アプリケーションプールIDは、(IIS Application Pool Identitiesに推奨されているように)デフォルトでApplicationPoolIdentity
ように放置した場合Ninject
は、私は次のエラーを取得するようながら、無視しているようですIIS 7アプリケーションプールのIDを正しく設定する方法はありますか。
のSystem.InvalidOperationException::非常に最初のコントローラを作成するタイプ のコントローラを作成 にしようとしたときにエラーが発生しました「..MainController」。 に、コントローラにパラメータのないパブリックコンストラクタがあることを確認します。 ---> System.DirectoryServices.DirectoryServicesCOMException:操作 エラーが発生しました。
私は(すべてのサブフォルダとファイルを含む)部位を含む、フォルダにIIS AppPool\<MySiteAppPool>
にFullAccess
を付与しようとしたが、これは何も変更しませんでした。
ただし、アプリケーションプールIDを任意のドメインアカウント(管理者権限のない単純なものでも、サイトのあるフォルダへのアクセスもなく)に設定すると、正常に動作します。
Ninjectは、Setting up an MVC3 applicationのチュートリアルに従ってNuGetパッケージにインストールされています。
私は確かではありませんが、それは、サイトがWindows認証でドメインイントラネットで動作するはずです。
したがって、唯一の問題はアプリケーションプールのIDと思われます。私が推奨する方法を使用することを熱望している限り、私はドメインアカウントではなくApplicationPoolIdentity
を持っていたいと思います。
これは何と接続できますか?これらを一緒に混ぜることは可能ですか?
これは、同様の問題:ASP.NET MVC 4 + Ninject MVC 3 = No parameterless constructor defined for this objectのSOスレッドです。しかし、そこには適切な答えもありません。削除されたコメントが示唆したように
、私はアイデンティティとしてNetworkSerive
を使用してみました。そしてそれは正しく働いた。しかし、これは特権のないドメインアカウントよりもはるかに良くないと思います。
EDIT
は突然、別の依存関係が見つかりました:私は、クライアント側のユーザーの資格情報が使用されることが期待かかわらず、アプリケーションプールIDは、SQL Server上のWindows認証に使用されます。
コメント
に基づいて遠隔のSQLサーバが偽装を介して認証資格情報を使用してアクセスすることができることに同意します。
ただし、ApplicationPoolIdentityとNinjectで問題が何であるかはまだ分かりません。
この質問の一番上にある記事では、仮想アカウントにはユーザープロファイルがないという事実が原因と考えられます。この側面は依然として私には不明ですが、IISがLoadUserProfile
属性を持つユーザープロファイルを読み込めるようにすることができます。仮想アカウントのプロファイルがない場合、IISがロードされるのは何ですか?
IISはWindowsユーザープロファイルをロードしませんが、特定のアプリケーション は、一時的なデータを保存するために、とにかく、それを活用することがあります
あると言われています。 SQL Express は、これを実行するアプリケーションの例です。ただし、ユーザー プロファイルは、 プロファイルディレクトリまたはレジストリハイブのいずれかに一時データを格納するために作成する必要があります。 NETWORKSERVICEアカウントのユーザープロファイルは、システムによって作成され、常に でした。ただし、固有のアプリケーションプール アイデンティティへの切り替えでは、システムによってユーザープロファイルは作成されません。 標準アプリケーションプール(DefaultAppPoolおよびClassic .NET AppPool) には、ディスク上のユーザープロファイルがあります。 管理者が新しいアプリケーションプールを作成した場合、ユーザープロファイルは作成されません。
ただし、必要に応じて、 "LoadUserProfile"属性を "true"に設定して、ユーザープロファイルを にロードするようにIISアプリケーションプールを構成できます。
私はserverfault.com上の次のスレッドが見つかりました:また、クエリ、アプリケーションプールIDは、特に、ネットワークサービスとして動作することができないことが述べられているがあり
How can I assign active directory permission to the default app pool identity
を宣伝。
あなたは完全なアクセス権を誰に与えましたか? – V4Vendetta
@ V4Vendettaサイトを含むフォルダ(すべてのサブディレクトリとファイルを含む)に 'IIS AppPool \'に 'FullAccess'を付与しました –
horgh
Ok、イベントログに何か追加の表示がありますか? – V4Vendetta