9

我在我的项目中定义了一个覆盖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 第 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)
    {
    }
}

我错过了配置中的某些内容吗?

4

2 回答 2

24

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

<behaviorExtensions>
    <add name="customHeaders" type="InMotionGIT_NT.Address.Service.CustomHeaders, <DLLName> , Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>
于 2012-05-28T17:53:09.323 回答
0

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

于 2016-11-03T09:31:29.910 回答