WCF错误:无法加载扩展名

时间:2012-05-28 15:50:32

标签: c# .net wcf exception-handling wcf-extensions

我在我的项目中定义了一个覆盖IDispatchMessageInspector的类,我添加了相关的配置,但它不起作用

  

System.Configuration.ConfigurationErrorsException:无法加载为扩展名'customHeaders'注册的类型'InMotionGIT_NT.Address.Service,CustomHeaders,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'。 (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)
    {
    }
}

我是否遗漏了配置中的内容?

2 个答案:

答案 0 :(得分:19)

更改您的类型定义。首先,指定完整类型名称(名称空间+类名称)。在逗号之后,放置包含您的类型的DLL的名称。然后是其余的完全限定的类型名称。像这样:

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

答案 1 :(得分:0)

确保该版本与dll版本相同。在我的情况下,我引用了这些类所属的相同的asssemlby。但我更改了AssemlbyInfo.cs文件中的程序集版本,该文件与App.config文件中的版本不匹配。