2012-05-28 3 views
6

я определил класс в моем проекте, который переопределяет IDispatchMessageInspector и я добавил конфигурацию, связанную, но это не работаетWCF ошибка: расширение не может быть загружено

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)

это, как я назвал мое пользовательским расширение

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

это, как я определен свой собственный расширение

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

Вот класс, который я определил, это внутри моего проекта

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

Пропустить что-то в конфигурации?

ответ

17

Изменить определение вашего типа. Первый - полное имя типа (интерфейс + имя класса). После комы вы поместите имя dll, держащего ваш тип. И чем дальше. Как это:

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

Убедитесь, что версия совпадает с версией библиотеки DLL. В моем случае я ссылался на тот же asssemlby, что эти классы являются частью. Но я изменил версию сборки в файле AssemlbyInfo.cs, которая не соответствовала версии здесь в файле App.config.

Смежные вопросы