2012-05-28 14 views
6

ho definito una classe nel mio progetto che sostituisce IDispatchMessageInspector e ho aggiunto la configurazione correlata ma è non funzionaWCF errore: l'estensione non potrebbe essere caricato

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)

questo è come ho chiamato la mia estensione personalizzata

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

è così che ho definito la mia estensione personalizzata

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

Ecco il classe che ho definito, è all'interno del mio progetto

[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) 
    { 
    } 
} 

Mi manca qualcosa nella configurazione?

risposta

17

Modificare la definizione del tipo. Il primo è il nome di tipo completo (interfaccia + nome classe). Dopo il coma hai posto il nome di dll che contiene il tuo tipo. E del resto. Ti piace questa:

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

Assicurarsi che la versione è la stessa della versione dll. Nel mio caso mi riferivo allo stesso asssemlby di cui queste classi fanno parte. Ma avevo cambiato la versione dell'assembly nel file AssemlbyInfo.cs che non corrispondeva alla versione qui nel file App.config.

Problemi correlati