2011-08-05 3 views
2

Sur II7, nous hébergeons une API basée sur WCF/asp.net. Afin de permettre aux utilisateurs d'une application ASP classique de se connecter à l'API, nous avons dû publier une version que nous appelons "transport". Cette version de Transport est écrite dans asp.net aussi, elle pointe vers le même assemblage, c'est juste la couche de sécurité qui est différente pour permettre à l'ASP classique de s'authentifier. La sécurité au niveau du transport est utilisée par opposition à la sécurité basée sur les messages. Lorsque vous utilisez un navigateur pour charger la référence de service, je peux charger la page svcutil.exe ... WDSL.Classic asp "Une erreur s'est produite lors de la vérification de la sécurité du message." iis7 transport level security

Lorsque vous utilisez mon test page asp pour appeler une méthode web à partir de cette référence, je reçois le texte suivant retourné:

appeler fini Service Web. État = Erreur interne du serveur ResponseText = a: InvalidSecurity Une erreur s'est produite lors de la vérification de la sécurité du message.

Ceci suggère que l'authentification a échoué. Lors d'un test utilisant asp.net ou l'application tempête WCF pour contacter l'API normale, tout fonctionne bien. L'API a été récemment migrée, il semblerait que quelque chose n'a pas été configuré correctement mais je ne peux pas expliquer quoi.

Je peux naviguer vers la référence de service svcutil.exe ... WDSL, en le sélectionnant via le navigateur, j'obtiens la réponse XML attendue. Le NOM UTILISATEUR et le mot de passe utilisés fonctionnent lorsque vous utilisez la publication ASP non classique de l'API en utilisant le message basé sur la sécurité.

Serait-il possible de poster un conseil de dépannage qui pourrait aider à diagnostiquer le problème, en particulier en ce qui concerne la détection et la configuration de la sécurité au niveau du transport?

Merci Scott

RÉVISÉ POUR AJOUTER LA MISE A JOUR SUIVANT:

a tenté d'utiliser la valeur par défaut App piscine et une nouvelle application de piscine, mais même problème persiste.

Erreur de page de test: ResponseText = a: InvalidSecurity Une erreur s'est produite lors de la vérification de la sécurité du message.

IIS LOG montre: v3/Transport/testclassicasptransportwcfservice.asp (200 0 0) (c.-à-IIs 200) /V3/Transport/DeviceService.svc/DeviceService (500 0 0) (c.-à-iis erreur 500)

note: répertoire virtuel défini sur TRANSPORT et V3. V3 fonctionne bien en utilisant .net par opposition à asp classique pour authentifier. L'initialisation du cache permanent du modèle a échoué pour le pool d'applications 'transport' en raison de l'erreur suivante: Impossible de créer un sous-répertoire de cache disque pour le pool d'applications. Les données peuvent avoir des codes d'erreur supplémentaires.

Cette référence semble suggérer un correctif mais de nombreux chemins et références DIR dans "appcmd" n'existent pas.

_http: //theether.net/kb/100127

Répondre

1

REF _http: // theether.net/kb/100127

charge cmd invite CD C: \ Windows \ System32 \ inetsrv entrez: liste appcmd config -section: system.webServer/asp le chemin suivant est affiché: c: \ inetpub \ conf \ temp \ ASP compilé des modèles chemin de contrôle existe (il ne) Vérifiez si le service réseau dispose des autorisations pour accéder à "ASP templates compilés" Si pas de appcmd exécuter

icacls « c: \ inetpub \ conf \ temp \ Modèles compilés ASP "/ grant" SERVICE RÉSEAU: (OI) (CI) (M) "

doit être lu" sucessf ully traité 1 fichiers "

redémarré app piscine. Le problème "InvalidSecurityAn erreur survenue lors de la vérification de la sécurité pour le message" persiste toujours mais l'erreur "Impossible de créer un sous-répertoire CACHE SOUS-DIRECORY ...." à partir du journal des événements ne se produit plus.

Désolé une autre mise à jour. Le changement d'autorisation de service réseau n'a pas résolu le problème, la modification de la PISTE APP DEFAUT a résolu le problème.

Vous avez enfin une longueur d'avance. Examiné:

  1. ServiceSecurityAudit défini dans le comportement de service. _http: //intrepiddeveloper.wordpress.com/2008/08/07/security-event-logging-auditing/#
  2. journaux IIS (montre simplement l'erreur non spécifique 500.)
  3. Recherche de pannes activé (également des spectacles erreur 500).
  4. erreurs personnalisées étaient hors
  5. messages amicaux IE étaient hors
  6. Asp côté client et le débogage côté serveur sur
  7. ProcessMon en cours d'exécution, aucune erreur.
  8. Web.config httpErrors ErrorMode = "Détail" /> +

ServiceSecurityAudit m'a trouvé une "référence d'objet non définie à une instance d'un objet" semble si comme notre application a un bug.


Suivi (17/08/11):

Audit Service de sécurité documenté ici:

http://intrepiddeveloper.wordpress.com/2008/08/07/security-event-logging-auditing/

était la clé pour nous de résoudre cette question. Découverte de l'erreur de référence d'objet qui indiquait que les dlls Business Objects et Data Access n'étaient pas alignés. L'utilisation de CLASSIC ASP pour contacter l'API WCF.NET à l'aide d'AUTHENTIFICATION DE TRANSPORT ne comportait aucune indication de cette erreur jusqu'à ce que Service Security Audit soit utilisé dans le fichier behaviour.config du déploiement WCF.

* RÉSOLU *

Questions connexes