我在我的项目中定义了一个覆盖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)
{
}
}
我是否遗漏了配置中的内容?
答案 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文件中的版本不匹配。