2012-05-28 32 views
6

he definido una clase en mi proyecto que anula IDispatchMessageInspector y yo añadió la configuración relacionada, pero es que no funcionaWCF error: extensión no se pudo cargar

System.Configuration.ConfigurationErrorsException: The type 'InMotionGIT_NT.Address.Service, CustomHeaders, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' registered for extension 'customHeaders' could not be loaded. (C:\Users\jmachado\Documents\Visual Studio 2010\Projects\InMotionGIT_NT\Address Service\InMotionGIT_NT.Address.Service\bin\Debug\InMotionGIT_NT.Address.Service.dll.config line 67)

esta es la forma en que llamé a mi extensión personalizada

<endpointBehaviors> 
    <behavior name="jsonBehavior"> 
     <enableWebScript/> 
     <customHeaders/> 
     <!--<webHttp/>--> 
    </behavior> 
</endpointBehaviors>  

éste es cómo definió mi extensión personalizada

<behaviorExtensions> 
    <add name="customHeaders" type="InMotionGIT_NT.Address.Service, CustomHeaders, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/> 
</behaviorExtensions> 

Aquí está la clase que he definido, que está dentro de mi proyecto

[AttributeUsage(AttributeTargets.Class)] 
public class CustomHeaders : IDispatchMessageInspector 
{ 
    public object AfterReceiveRequest(ref Message request, ClientChannel channel, InstanceContext instanceContext) 
    { 
     if ((WebOperationContext.Current.IncomingRequest.Method == "GET")) 
     { 
      WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "*"); 
      WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Methods", "POST"); 
      WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Headers", "Content-Type, Accept"); 
     } 
     return null; 
    } 

    public void BeforeSendReply(ref Message reply, object correlationState) 
    { 
    } 
} 

No he perdido algo en la configuración?

Respuesta

17

Cambie la definición de tipo. Primero está el nombre de tipo completo (interfaz + nombre de clase). Después del coma, coloque el nombre de dll con su tipo. Y que el resto De esta manera:

<behaviorExtensions> 
    <add name="customHeaders" type="InMotionGIT_NT.Address.Service.CustomHeaders, <DLLName> , Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> 
</behaviorExtensions> 
0

Asegúrese de que la versión es la misma que la versión de DLL. En mi caso, estaba haciendo referencia al mismo asssemlby del que forman parte estas clases. Pero había cambiado la versión del ensamblado en el archivo AssemlbyInfo.cs que no coincidía con la versión aquí en el archivo App.config.

Cuestiones relacionadas