読者です 読者をやめる 読者になる 読者になる

「Endpoint Address が一致していない」とエラーになったときの回避方法

Windows Azure の WebRole にホストさせた WCF サービスを UI から呼び出そうとしたら、以下のメッセージが表示された。

EndpointDispatcher で AddressFilter が一致してないため To (アドレス) を含むメッセージを受信側で処理できません。送信側と受信側の Endpoint Address が一致していることを確認してください。

Endpoint Address は間違っていないのに…。ちなみに、サービスの呼び出しには、サービス参照で生成したクライアントではなく、ChannelFactory を使って動的に生成したチャネルを使っている。

解決方法…というか回避方法は一応あって、サービスビヘイビアで AddressFilterMode に Any を指定すれば呼び出せるようになる。

[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]
public class FooService : IFooService
{
}

AddressFilterMode の情報が少なすぎて、回避方法しか見つけられなかった。とりあえずメモしておく。