2010-11-17 21 views
4

Mon entreprise a récemment changé d'un T-1 dédié à une connexion Comcast à haut débit. Immédiatement après, ce problème a commencé. Nos machines de développement sont locales, mais notre serveur Active Directory (utilisé pour tester et mettre en scène le produit avant les déploiements) est une instance de cloud public située sur Rackspace. Les machines dev ne sont pas connectées au domaine.ActiveDirectoryMembershipProvider "Le domaine ou le serveur spécifié n'a pas pu être contacté" APRES avoir changé de Comcast

Nous utilisons ActiveDirectoryMembershipProvider et l'authentification basée sur formulaire - ainsi que des requêtes LDAP dans l'application elle-même une fois l'authentification terminée.

Nous utilisons cette configuration depuis plusieurs mois - pas de problème. Après le passage à Comcast - tout semble fonctionner correctement, sauf ceci. Lorsque nous essayons d'exécuter l'application localement, nous obtenons l'erreur ci-dessus.

Erreur de serveur dans l'application '/ Web.NEPA'.
--------------------------------------------------------------------------------

Erreur de configuration Description: Une erreur est survenue lors du traitement d'un fichier de configuration requis pour cette demande. Veuillez consulter les détails d'erreur spécifiques ci-dessous et modifier votre fichier de configuration de manière appropriée.

Message d'erreur de l'analyseur: Le domaine ou le serveur spécifié n'a pas pu être contacté.

erreur Source:

Ligne 4: Ligne 5: Ligne 7: connectionStringName = "LdapService" Ligne 8: attributeMapUsername = "SAMAccountName"

Fichier source: C: \ dev \ EMSolution \ branches \ 3.4.0.0 \ Web.NEPA \ App_Config \ Test \ 3.4.0.0 \ NEPAARNG \ System.Web.Membership.config ligne: 6

-------------------------------------------------------------------------------- Informations sur la version: Microsoft .NET Framework version: 2.0.50727.4952; Version ASP.NET: 2.0.50727.4955

Je me suis assuré que ce n'était pas un problème de pare-feu sur le côté Rackspace (en l'éteignant complètement et en essayant une connexion). J'ai également créé un programme de test pour exécuter une requête LDAP sur notre instance AD ​​- ce qui fonctionne parfaitement.

--- est ici quelques-uns des articles référencés:

<membership defaultProvider="AspNetActiveDirectoryMembershipProvider"> 
    <providers> 
     <add name="AspNetActiveDirectoryMembershipProvider" 
    type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"   
    connectionStringName="LdapService" 
    attributeMapUsername="SAMAccountName" 
    connectionUsername="DEV1\emsutil" 
    connectionPassword="*****" 
    connectionProtection="None" 
    requiresQuestionAndAnswer="false" 
    minRequiredPasswordLength="4" 
    minRequiredNonalphanumericCharacters="0" 
    enableSearchMethods="true"/> 
    </providers> 
</membership> 

<connectionStrings> 
    <add name="LdapService" connectionString="LDAP://cloud1.dev1/DC=dev1" /> 
</connectionStrings> 

--- Programme de test qui fonctionne correctement:

using System; 
using System.DirectoryServices; 

namespace ldaptest 
{ 
internal class Program 
{ 
    private static void Main(string[] args) 
    { 
     DirectoryEntry de = new DirectoryEntry(); 
     de.Path = "LDAP://cloud1.dev1/DC=dev1"; 
     de.Username = "[email protected]"; 
     de.Password = "*****"; 

     DirectorySearcher srch = new DirectorySearcher(de); 
     srch.Filter = "(objectClass=user)"; 

     using (SearchResultCollection results = srch.FindAll()) 
     { 
      foreach (SearchResult res in results) 
      { 
       Console.WriteLine("\t{0}", res.Path); 
      } 
     } 

     Console.ReadKey(); 
    } 
} 
} 

Répondre

1

J'ai vu des problèmes similaires avant, et je pense que Comcast pourrait être la source de votre problème. Comcast dispose d'une "fonctionnalité" appelée Domain Helper qui intercepte les demandes de noms de domaine non valides et qui sert à la place d'une page proposant des alternatives, des publicités, etc. (Fondamentalement, il casse DNS pour gagner quelques dollars publicité.)

Votre requête est susceptible d'interférer avec le service d'assistance de domaine.Alors qu'il ne recevrait normalement aucune réponse d'Internet et revenait sur le réseau local pour trouver le serveur, il obtiendrait à la place une réponse "valide" de la part de Domain Helper. Bien sûr, la réponse n'est pas du tout ce que votre code attend, donc une exception est levée.

Il existe plusieurs méthodes pour désactiver Domain Helper, mais la meilleure solution consiste à les appeler. Vous pouvez également essayer de regarder http://dns-opt-out.comcast.net/ et http://dns.comcast.net/ pour plus de ressources de débogage.

+0

Excellente suggestion ... nous avons au moins temporairement résolu le problème en faisant du serveur distant un serveur DNS pour nos VM de développement ... ce serait beaucoup mieux - vous le ferai savoir une fois que je traverse la structure de support Comcast. –