正常配置了nginx反向代理,其他java站点什么的都正常,就wcf总是失败。始终会跑如下异常:

由于 AddressFilter 在 EndpointDispatcher 不匹配,To 为“http://testst.lenovo.com/Services/UserManagementService.svc”的消息无法在接收方处理。请检查发送方和接收方的 EndpointAddresses 是否一致。

字面意思是经过nginx转发之后,request和Response不匹配了,导致wcf校验失败。就想着让nginx转发请求变成透明转发,最终没找到怎么配置。

之后发现,在wcf端作如下修改可降低wcf关于地址校验的级别,也就是设置AddressFilterMode,这个也可以解决地址不匹配的问题。

[System.ServiceModel.ServiceBehavior(AddressFilterMode = System.ServiceModel.AddressFilterMode.Any)]
    public class ServerImplement : IServcieInterface
{
    
}

根据这个帖子的说法:https://social.msdn.microsoft.com/Forums/vstudio/en-US/d636c59b-426b-404e-be28-b78afc863a29/addressfilter-mismatch-at-the-endpointdispatcher-how-to-get-wcf-behind-isatmg-publish-working?forum=wcf

没办法在web.config中配置,只能修改源码。