2010-12-03 9 views
3

J'ai lu d'autres messages sur la façon d'accomplir cela, mais en vain. Quand je demande à mon déployer le serveur (2008) Je reçois l'exception suivante lors de l'exécution:Comment puis-je accorder l'accès en lecture à une application ASP.NET MVC à une clé de registre?

Access to the registry key 'HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\TeamFoundation\Servers' is denied. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.UnauthorizedAccessException: Access to the registry key 'HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\TeamFoundation\Servers' is denied. 

ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that is used if the application is not impersonating. If the application is impersonating via <identity impersonate="true"/>, the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user. 

Pour autoriser l'accès ASP.NET à un fichier, cliquez droit sur le fichier dans l'Explorateur, choisissez « Propriétés » et sélectionnez l'onglet Sécurité. Cliquez sur "Ajouter" pour ajouter l'utilisateur ou le groupe approprié. Mettez en surbrillance le compte ASP.NET et cochez les cases correspondant à l'accès souhaité.

L'erreur semble donc très descriptive. J'ai ouvert regedit et un clic droit sur le KEY (HKEY_CURRENT_USER \ Software \ Microsoft) -> Permissions -> Ajouté utilisateur 'NETWORK SERIVCE' et accordé le contrôle complet. J'ai supposé que c'était l'utilisateur qu'utilisait ASP.NET pour accéder au registre.

J'ai ensuite essayé de désactiver 'Inclure les autorisations pouvant être héritées du parent de cet objet.

Cela n'a pas non plus fonctionné. Dans le Gestionnaire des services Internet, sous les paramètres d'authentification de mon application, j'ai défini l'utilisateur 'Authentification anonyme' sur le mien qui se trouve dans le groupe Administrateur.

Rien ne semble fonctionner.

Comment puis-je résoudre ce problème? C'est un outil interne fonctionnant sur notre réseau local, donc je ne suis pas très concerné par les permissions de sécurité à ce stade. Comment puis-je accorder les privilèges appropriés?

Merci!

+0

Si vous définissez l'utilisateur anonyme sur un utilisateur * autre * que NETWORK SERVICE, vous devez accorder * cet * accès utilisateur au registre. – casperOne

+0

Je serais prudent en essayant d'effectuer des opérations comme celles-ci qui nécessitent une confiance totale. Ça pourrait revenir te hanter. – mikesigs

Répondre

1

Il est difficile de dépanner sans savoir ce que votre application Web essaie d'accomplir. Cependant, je suppose qu'il s'agit d'une application Web, ce qui signifie que vous avez créé une base de données pour votre site Web. Tout d'abord, dans votre Web.config'connectionString ', essayez d'utiliser le nom d'utilisateur et le mot de passe que vous avez utilisés pour vous connecter à SQL Server Management. N'utilisez pas de connexion Windows. Deuxièmement, essayez d'exécuter votre application en utilisant la touche de fonction F5. Cela va démarrer un serveur intégré fourni avec Visual Studio 2008. Cela ne nécessite pas IIS local.

Si le problème persiste, envoyez-moi votre fichier Web.config. Voyez si je peux aider.

1

J'ai dû définir l'identité du pool d'applications sur "LocalSystem" pour cette application. Cela a permis à mon application de disposer de suffisamment de privilèges pour lire le registre.