ASP.NET application/service web ne fonctionne pas sur Windows Vista/IIS 7: droit d'accès problème?
J'ai un .NET 3.5 web basé sur le service en cours d'exécution à http://localhost/serivce.svc/. Alors j'ai un ASP.NET application en cours d'exécution à http://localhost/myApp. Dans Application_Load
mon application lit XML de configuration du service web. Qui fonctionne très bien sur ma machine, mais:
- Sur Windows Vista avec IIS 7, la demande pour les services web échoue.
- Le service web peuvent être accessibles via le navigateur sans aucun problème.
- J'ai configuré l'application de la piscine de mon application à exécuter en tant qu'administrateur. J'ai ajouté l'administrateur de la IIS_USRS groupe, mais il ne peut toujours pas accéder au service web.
impersonate=true/false
ne semble pas faire une différence.
- "demande à la webervices échoue" - comment est-il échouer? Est-il une exception? S'il vous plaît poster. Il n'y a rien dans les journaux des événements? Post que.
- Je reçois un 503 du webservice en arrière. J'ai écrit le accessible à l'url d'un fichier journal et il fonctionne très bien dans le navigateur. Que le code fonctionne très bien si on commence à partir de Visual Studio, je n'étais pas encore en mesure d'obtenir plus d'informations via le débogueur.
- J'ai essayé de déboguer le problème de plus. Si je configurer myApp avec une mauvaise URL, ce qui n'existe pas, je reçois toujours un 503. C'est étrange, parce que je m'attends à une erreur 404. J'ai essayé d'utiliser un violon pour avoir un regard sur les détails de la demande, mais pas de demande de la montre dans un violon. Donc je suppose que la requête ne laisse même myApp. En quelque sorte, la demande de la localité doivent être interdites sur cette machine, mais je ne sais pas pourquoi et comment vérifier que!?
- fiddler ne sera pas montrer les sessions à localhost - la d'IE proxy bits sont codés en dur de ne pas utiliser le proxy pour localhost, au lieu d'utiliser 127.0.0.1./exemple (c'supplémentaire . est destiné à être là)
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, prendre admin de le groupe IIS_WPG avant de l'oublier, et de configurer votre application de la piscine de retour à la normale.
Maintenant, tournez sur WCF vous connectant sur le service en mettant le texte suivant dans votre site web.fichier de configuration -
Créer l'c:\logs annuaire et assurez-vous que l'identité du pool d'applications de l'utilisateur a un contrôle total sur ce répertoire. Maintenant tester votre application.
Si aucun des fichiers journaux sont créés puis, il y a un problème d'atteindre le service WCF.
Si les fichiers journaux sont créés les afficher dans la visionneuse de Trace de Service qui s'inscrit dans le SDK de Windows. Vous verrez un message rouge qui est l'entrée de journal contenant l'exception générée à l'intérieur du service - cela devrait vous donner une indication de l'endroit où votre code de service qui ne va pas.
Si le problème est à l'intérieur de votre application, plutôt que les services, alors vous devriez être la journalisation des exceptions à l'intérieur de votre
Application_Load
événement (vous devez être de la journalisation des exceptions tout de même) - toutefois, si vous essayez avec un gestionnaire d'exception, eh bien, votre application est en défaut au démarrage et donc le gestionnaire global d'exception ne sera jamais commencer à courir - au lieu de mettre le potentiel failable scénarios dansApplication_Load
je devais déménager à une classe utilitaire qui fournit un point d'accès à l'information dont vous avez besoin (dire myGlobalThingumy.GetStuff()). Faire de cette classe un singleton, et de vérifier ensuite si vous avez l'étoffe déjà - si vous ne le faites pas, alors vous faites de votre appel de service web. Il s'agirait bien de la même chose que de le mettre dansApplication_Load
mais permettra à la gestion des erreurs pour le travail, et faire de votre débogage plus facile.Essayer de donner accès à la IIS_USRS groupe sur le dossier qui contient le service web et vérifier encore une fois :).
Lorsque vous obtenez les erreurs 503, avez-vous pensé à regarder l'observateur d'événements sur la machine pour voir si IIS enregistrés l'exception.
Lorsqu'il est lancé à partir de Visual Studio, est en cours d'exécution dans Visual Studio ou le serveur web IIS? (Ceci est un point crucial. Visual Studio, depuis 2005, a utilisé son propre serveur web par défaut pour les projets web. Et ce serveur web est exécuté sous votre compte d'utilisateur, c'est aussi critique pour les mois à venir.)
Vous êtes de la tentative de lecture du XML bonté d'un fichier. Dans .NET, afin de lire un fichier, pour une raison quelconque, l'utilisateur qui exécute le code (IIS7 je crois que c'est IIS_USERS et de SERVICE RÉSEAU; dans les anciennes versions de IIS, IUSR_MachineName et ASPNET) ont à la fois lire et écrire autorisations d'accès. Donc, la première chose que je voudrais faire est de vérifier les ACL sur ce fichier XML. Assurez-vous que les utilisateurs concernés ont accès en lecture/écriture. Ce serait les autorisations NTFS, par le moyen -- cliquez-droit sur le fichier dans l'Explorateur, sélectionnez Sécurité, et ajouter les perms.
Ce qu'il a donné suite, c'est qu'il fonctionne lorsque vous exécutez la solution à partir de Visual Studio, mais pas lorsqu'il est exécuté à partir de IIS. Je ne crois pas que vous obtenez 503 de retour à partir du service web, vous êtes plus susceptibles d'obtenir 503 de
myApp
lui-même.La raison de cette 503 est parce que vous tentez de lire ce fichier sur
Application_Load
. Cela signifie qu'avant toute page peut même tenter d'être servi, votre fichier XML doit être lu et interprété. Après réflexion, et à la re-lecture de la question une fois de plus, je suis maintenant à 99,99% que l'incapacité de lire ce fichier (en raison de l'absence des autorisations d'écriture sur lui) est le problème.Mon conseil: sortez de l'administrateur des trucs que vous avait fait, prenez votre utilisateur/configuration ACL de retour à la normale, comment c'était-y compris le pool d'applications. Ensuite, suivez les conseils ci-dessus pour octroyer l'IIS utilisateurs accès en lecture/écriture dans le fichier XML. Je suis à 99,99% que votre application va maintenant travailler dans IIS.
Application_Load
. À ce stade, j'aurais probablement pour voir plus de l'app ... À ce point, si vous êtes en utilisant WCF, il est temps de commencer à utiliser blowdart conseils.