Comment faire pour configurer IIS 7 identité du pool d'applications correctement?

Après avoir déployé mon site web IIS7.5 j'ai trouvé un étrange comportement: lorsque l'identité du pool d'applications est laissé à la ApplicationPoolIdentity par défaut (comme recommandé dans Pool d'Applications IIS Identités), Ninject semble être ignoré, car j'obtiens l'erreur suivante, lors de la création du tout premier contrôleur:

Système.InvalidOperationException: Une erreur s'est produite lors de la tentative de
créer un contrôleur de type
'..MainController'. Assurez-vous que
que le contrôleur a un sans paramètre constructeur public. --->
Système.DirectoryServices.DirectoryServicesCOMException: des opérations
erreur s'est produite.

J'ai essayé d'accorder FullAccess à IIS AppPool\<MySiteAppPool> le dossier contenant le site (y compris tous les sous-dossiers et fichiers), mais cela n'a pas changer quoi que ce soit.

Cependant, lorsque j'ai mis l'identité du pool d'applications pour tout compte de domaine (même simple, sans privilages administratives, ainsi que, sans accès au dossier avec le site), il fonctionne normalement.

Ninject est installé selon La configuration d'une application MVC3 tutoriel sur le package NuGet.

Je ne suis pas sûr, si c'est pertinent, le site est censé travailler dans un domaine intranet avec l'authentification windows.

Donc, le seul problème semble être avec l'identité du pool d'applications. Pour autant que je suis impatient de l'utiliser de la manière recommandée, j'aimerais bien avoir la ApplicationPoolIdentity, pas un compte de domaine.

Ce que cela peut-il être connecté avec? Est-il possible de mélanger tous ces ensemble?


Voici un fil avec une question similaire: ASP.NET MVC 4 + Ninject MVC 3 = Pas de constructeur sans paramètre défini pour cet objet. Cependant l'absence de réponse à toutes les deux.


Comme la suppression du commentaire, il est proposé, j'ai essayé d'utiliser NetworkSerive que l'identité. Et cela a fonctionné correctement. Cependant, je suppose que ce n'est pas beaucoup mieux, qu'un non-privilégiés de compte de domaine.


MODIFIER

Soudainement trouvé une autre dépendance: l'identité du pool d'applications est utilisé pour l'authentification windows sur sql server, mais j'avais prévu le côté client de l'utilisateur informations d'identification à utiliser.

Sur la base des observations

D'accord qu'un serveur sql server distant peut être consulté à l'authentifiés informations d'identification par imitation.


Cependant, il n'est pas encore clair quel est le problème avec ApplicationPoolIdentity et Ninject.

L'article mentiond au sommet de cette question m'a fait supposer que cela pourrait être causé par le fait, que compte virtuel n'a pas de profil utilisateur. Cet aspect reste pas clair pour moi, que l'on peut toujours activer IIS pour charger le profil de l'utilisateur avec le LoadUserProfile attribut. Je n'arrive pas, qu'est-ce que IIS va charger, si il n'y a pas de profil pour le compte virtuel?

Il y est dit:

IIS n'a pas de charger le profil utilisateur de Windows, mais certaines applications
peut en profiter de toute façon pour le stockage temporaire de données. SQL Express
est un exemple d'une application qui fait cela. Toutefois, un utilisateur
le profil doit être créé pour stocker les données temporaires dans le
répertoire de profil ou dans la ruche de registre. Le profil de l'utilisateur pour la
Compte NETWORKSERVICE a été créé par le système et a toujours été
disponible. Cependant, avec le passage de Pool d'Applications unique
identités, aucun profil d'utilisateur est créé par le système. Seul le
Application standard Piscines (DefaultAppPool et Classique .NET pool d'applications)
les profils utilisateur sur le disque. Aucun profil d'utilisateur est créé si l'
L'administrateur crée un nouveau Pool d'Applications.

Toutefois, si vous le souhaitez, vous pouvez configurer des Pools d'Applications IIS pour charger
le profil de l'utilisateur en définissant la "LoadUserProfile" attribut "true".


J'ai trouvé le fil de discussion suivant sur serverfault.com:

Comment puis-je attribuer autorisation active directory par défaut par l'application d'identité du pool d'

Il est également indiqué que le pool d'applications de l'identité est incapable de travailler comme un service de réseau, en particulier, à la requête de l'ANNONCE.

Vous avez un accès complet à qui ?
J'ai accordé FullAccess à IIS AppPool\<MySiteAppPool> le dossier contenant le site (y compris tous les sous-répertoires et fichiers)
Ok, avez-vous quelque chose de supplémentaire à apparaître dans les journaux des événements ?
Mon journal d'application ne reçoit que l'exception posté ci-dessus. Comme fr les journaux windows, je n'ai pas réussi à trouver quelque chose de convenable.
Vous pouvez quitter l'application de la piscine à ApplicationPoolIdentity et ensuite utiliser asp emprunt d'identité pour se connecter à votre base de données avec un utilisateur spécifique. Regardez la section "authentification" et vous le verrez. La clé est <identity impersonate="true" userName="" password="" /> dans votre site web.config.

OriginalL'auteur horgh | 2013-03-28