none
System.DirectoryServices.Protocols not found RRS feed

  • Pregunta

  • Hola muchachos,

    La verdad ya no sé que más hacer. 

    Resulta que tenía una aplicación en ASP.NET con C# que se loguea usando el siguiente código

               
    try
                {
                    using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, CMN.TRMNGR.Aplicacion.Constantes.ServidorActiveDirectory))
                    {                
                         isValid = pc.ValidateCredentials(usuario, contrasena);
                        
                    }
                }catch(Exception e){
    
                    string msg = e.Message;
                }
                

    Resulta que compré un nuevo computador, y al instalar todo nuevamente cuando quiero ejecutar mi aplicación se me queda en la línea 

    using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, CMN.TRMNGR.Aplicacion.Constantes.ServidorActiveDirectory))

    Y me sacá el siguiente error:


    <title>No se puede cargar el archivo o ensamblado 'System.DirectoryServices.Protocols, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ni una de sus dependencias. El sistema no puede encontrar el archivo especificado.</title><meta content="width=device-width" name="viewport" /><style>body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;} p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px} b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px} H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red } H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon } pre {font-family:"Consolas","Lucida Console",Monospace;font-size:11pt;margin:0;padding:0.5em;line-height:14pt} .marker {font-weight: bold; color: black;text-decoration: none;} .version {color: gray;} .error {margin-bottom: 10px;} .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; } @media screen and (max-width: 639px) { pre { width: 440px; overflow: auto; white-space: pre-wrap; word-wrap: break-word; } } @media screen and (max-width: 479px) { pre { width: 280px; } } </style>

    Error de servidor en la aplicación '/TR-Manager'.

    No se puede cargar el archivo o ensamblado 'System.DirectoryServices.Protocols, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ni una de sus dependencias. El sistema no puede encontrar el archivo especificado.

    Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

    Detalles de la excepción: System.IO.FileNotFoundException: No se puede cargar el archivo o ensamblado 'System.DirectoryServices.Protocols, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ni una de sus dependencias. El sistema no puede encontrar el archivo especificado.

    Error de código fuente:

    Línea 181:
    Línea 182:            return strDistinguishedName;
    Línea 183:        }
    Línea 184:    }
    Línea 185:}

    Archivo de origen: d:\Desarrollos\CodigoFuente\TR_Manager\BSNS\Seguridad\ActiveDirectory.cs    Línea: 183

    Rastro al cargar el ensamblado: La información siguiente puede ser útil para determinar porqué no se cargó el ensamblado 'System.DirectoryServices.Protocols, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

    AVS: El registro del enlace de ensamblado está desactivado.
    Para habilitar el registro de errores del enlace de ensamblado, establezca el valor de Registro [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) como 1.
    Nota: existe una disminución del rendimiento asociada registro de errores del enlace de ensamblado.
    Para desactivar esta característica, elimine el valor de Registro [HKLM\Software\Microsoft\Fusion!EnableLog].
    

    Seguimiento de la pila:

    [FileNotFoundException: No se puede cargar el archivo o ensamblado 'System.DirectoryServices.Protocols, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ni una de sus dependencias. El sistema no puede encontrar el archivo especificado.]
       TR.Manager.BSNS.Seguridad.ActiveDirectory.AuthenticateUsingDirectoryEntry(String strDomain, String strUserName, String strPassword) in d:\Desarrollos\CodigoFuente\BSNS\Seguridad\ActiveDirectory.cs:183
       Web.Default.btbEntrar_Click(Object sender, EventArgs e) in d:\Desarrollos\CodigoFuente\Web\Default.aspx.cs:28
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3804
    


    Información de versión: Versión de Microsoft .NET Framework:4.0.30319; Versión ASP.NET:4.0.30319.34212



    Espero que alguién me pueda colaborar, la verdad no sé que hacer y llevo mucho tiempo tratando de organizarlo y ya los jefes están desesperados. Gracias nuevamente

    viernes, 6 de febrero de 2015 17:15

Todas las respuestas

  • hola

    por el error entiendo que autenticas contra Active Directory, o sea contra un dominio de windows

    validaste que el proyecto web tenga la referencia a System.DirectoryServices.Protocols ?

    este problema se presenta cuando ejecutas desde el VS o cuando publicas en el IIS ? porque quizas deberias validar que en el \bin este  System.DirectoryServices.Protocols.dll

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 6 de febrero de 2015 17:45
  • Hola Leandro, 

    Antes que nada gracias por responder.

    Te cuento que efectivamente estoy validando contra un activedirectory. 
    El error se lanza tanto cuando ejecuto desde Visual Studio como si lo publico en iis. (Pero solo en el computador nuevo), en el computador viejo el mismo código fuente funciona ejecutando desde visual studio y en iis. (De hecho lo tengo publicado allá para que la gente pueda trabajar)

    Mira te muestro como tengo las referencias en mi capa de datos que es donde hago la invocación a la dll de .net para validar en active directory.

    De hecho esa referencia a protocols me tocó hacerla para intentar, pero en el equipo viejo no es necesaria.

    En la capa de la vista web así estan las referencias.

     

    En la carpeta bin de la vista web así estan las cosas 

    https://social.msdn.microsoft.com/Forums/getfile/608520

    Y en la carpeta bin de la capa de logica de negocio está así. (Sé que esta no es tan importante pero bueno jeje)

    https://social.msdn.microsoft.com/Forums/getfile/608521

    Intenté copiando las dll a la carpeta bin del web. 

    https://social.msdn.microsoft.com/Forums/getfile/608526

    y el error que salió fue el siguiente  (Muchas gracias Leandro)

    <title>No se puede cargar un ensamblado de referencia para la ejecución.</title> <meta content="width=device-width" name="viewport" /><style>body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;} p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px} b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px} H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red } H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon } pre {font-family:"Consolas","Lucida Console",Monospace;font-size:11pt;margin:0;padding:0.5em;line-height:14pt} .marker {font-weight: bold; color: black;text-decoration: none;} .version {color: gray;} .error {margin-bottom: 10px;} .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; } @media screen and (max-width: 639px) { pre { width: 440px; overflow: auto; white-space: pre-wrap; word-wrap: break-word; } } @media screen and (max-width: 479px) { pre { width: 280px; } } </style>

    Error de servidor en la aplicación '/'.

    No se puede cargar un ensamblado de referencia para la ejecución.

    Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

    Detalles de la excepción: System.BadImageFormatException: No se puede cargar un ensamblado de referencia para la ejecución.

    Error de código fuente:

    Se ha generado una excepción no controlada durante la ejecución de la solicitud Web actual. La información sobre el origen y la ubicación de la excepción pueden identificarse utilizando la excepción del seguimiento de la pila siguiente.

    Seguimiento de la pila:

    [BadImageFormatException: No se puede cargar un ensamblado de referencia para la ejecución.]
    
    [BadImageFormatException: No se puede cargar el archivo o ensamblado 'System.DirectoryServices.Protocols' ni una de sus dependencias. Los ensamblados de referencia no deben cargarse para la ejecución. Se pueden cargar únicamente en el contexto de cargador solo para la reflexión. (Excepción de HRESULT: 0x80131058)]
       System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
       System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34
       System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
       System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77
       System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16
       System.Reflection.Assembly.Load(String assemblyString) +28
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38
    
    [ConfigurationErrorsException: No se puede cargar el archivo o ensamblado 'System.DirectoryServices.Protocols' ni una de sus dependencias. Los ensamblados de referencia no deben cargarse para la ejecución. Se pueden cargar únicamente en el contexto de cargador solo para la reflexión. (Excepción de HRESULT: 0x80131058)]
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +736
       System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +217
       System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
       System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170
       System.Web.Compilation.WebDirectoryBatchCompiler..ctor(VirtualDirectory vdir) +124
       System.Web.Compilation.BuildManager.BatchCompileWebDirectoryInternal(VirtualDirectory vdir, Boolean ignoreErrors) +44
       System.Web.Compilation.BuildManager.BatchCompileWebDirectory(VirtualDirectory vdir, VirtualPath virtualDir, Boolean ignoreErrors) +187
       System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) +74
       System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) +299
       System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) +103
       System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound) +165
       System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp) +43
       System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath) +31
       System.Web.UI.PageHandlerFactory.GetHandler(HttpContext context, String requestType, String virtualPath, String path) +37
       System.Web.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +346
       System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
    


    Información de versión: Versión de Microsoft .NET Framework:4.0.30319; Versión ASP.NET:4.0.30319.34212

    La tecnologia te envuelve

    viernes, 6 de febrero de 2015 18:16