【发布时间】:2011-08-31 03:39:29
【问题描述】:
我有一个启用了发现的 WCF 服务,现在我想将客户端连接到它。
问题:当我使用 udp 端点 (1.) 并尝试以编程方式发现服务时,它可以工作...当我使用 App.config 方法 (2.) 时,它不会(错误:未发现端点) .
在我看来,这两种解决方案的“udp 发现结果”应该是相同的,但不幸的是它不是......
1.以编程方式处理(有效):
代码:
DiscoveryClient discClient = new DiscoveryClient("udpDiscoveryEndpoint");
FindCriteria fCriteria = new FindCriteria(typeof(IAlarmServer));
fCriteria.Duration = TimeSpan.FromSeconds(5);
fCriteria.MaxResults = 1;
FindResponse fResponse = discClient.Find(fCriteria);
EndpointAddress address = fResponse.Endpoints[0].Address;
Console.WriteLine("Address found: " + address.ToString());
配置:
<system.serviceModel>
<client>
<endpoint name="udpDiscoveryEndpoint" kind="udpDiscoveryEndpoint" />
</client>
</system.serviceModel>
2。 App.config 方法和“集成到端点”方法(不起作用!):
代码:
var Proxy = new AlarmServerClient("IAlarmServer"); // Default client generated by Visual Studio
Proxy.SomeMethod(); // throw no endpoints discovered exception
配置:
<standardEndpoints>
<dynamicEndpoint>
<standardEndpoint name="discoveryDynamicEndpointConfiguration">
<discoveryClientSettings>
<findCriteria duration="00:00:05" maxResults="1">
<types>
<add name="AlarmServiceRef.IAlarmServer"/>
</types>
</findCriteria>
<endpoint kind="udpDiscoveryEndpoint"/>
</discoveryClientSettings>
</standardEndpoint>
</dynamicEndpoint>
</standardEndpoints>
配置:
<client>
<endpoint binding="basicHttpBinding" bindingConfiguration="DefaultBasicHttpBinding" contract="AlarmServiceRef.IAlarmServer" name="IAlarmServer"
kind="dynamicEndpoint"
endpointConfiguration="discoveryDynamicEndpointConfiguration"/>
</client>
任何想法为什么会发生这种情况?
【问题讨论】:
-
这种类型是强命名的吗?
标签: c# .net wcf .net-4.0 wcf-binding