62,243
社区成员




System.Configuration.ConfigurationErrorsException:
无法找到配置绑定扩展“system.serviceModel/bindings/wsDualHttpBinding”。
请验证此绑定扩展是否已在 system.serviceModel/extensions/bindingExtensions 中正确注册以及是否拼写正确。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<compilation debug="true" />
</system.web>
<system.serviceModel>
<services>
<service name="Wrox.ProCSharp.MessageService">
<host>
<baseAddresses>
<add baseAddress = "http://localhost:8732/Design_Time_Addresses/MessageService/Service1/" />
</baseAddresses>
</host>
<endpoint address ="" binding="wsdualHttpBinding" contract="Wrox.ProCSharp.WCF.IMyMessage">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
namespace Wrox.ProCSharp.WCF
{
public interface IMyMessageCallback
{
[OperationContract(IsOneWay = true)]
void OnCallback(string message);
}
[ServiceContract(CallbackContract = typeof(IMyMessageCallback))]
public interface IMyMessage
{
[OperationContract]
void MessageToServer(string message);
}
}
实现类代码如下:namespace Wrox.ProCSharp.WCF
{
public class MessageService : IMyMessage
{
public void MessageToServer(string message)
{
Console.WriteLine("message from the client: {0}", message);
IMyMessageCallback callback =
OperationContext.Current.
GetCallbackChannel<IMyMessageCallback>();
callback.OnCallback("message from the server");
Task.Factory.StartNew(new Action<object>(TaskCallback), callback);
// new Thread(ThreadCallback).Start(callback);
}
private void TaskCallback(object callback)
{
IMyMessageCallback messageCallback = callback as IMyMessageCallback;
for (int i = 0; i < 10; i++)
{
messageCallback.OnCallback("message " + i.ToString()+"来源于服务的消息!");
Thread.Sleep(1000);
}
}
}