所以我创建了客户/服务器WCF。我想要的是,当我从这个客户端向服务器发送消息并且连接因任何原因而中断时,客户端关闭,例如,当客户端再次可用时,如何获得响应?如何在连接切断后在WCF可靠消息传递中从服务器接收响应
是否可以在客户端和服务器之间设置会话或类似的东西?
我的客户端代码:
private static void Main(string[] args)
{
var client = new FlipCaseServiceClient("ReliableMessageService");
var sd = new StringData { FirstName = "Turgut", LastName = "Kançeltik" };
var fullName = client.GetFullName(ref sd);
Console.WriteLine(fullName);
}
我的服务器代码是:在总结
[DeliveryRequirements(RequireOrderedDelivery = true)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Single)]
public class FlipCaseService : IFlipCaseService
{
public string GetFullName(ref StringData stringData)
{
var fullName = $"{stringData.FirstName} {stringData.LastName}";
stringData.FullName = fullName;
return fullName;
}
}
和服务器的配置:
<service behaviorConfiguration="ServiceBehaviorMetaData" name="FlipCaseService.FlipCaseService" >
<endpoint name="ReliableMessageService" address="flipcase/wsAddress" binding="wsHttpBinding" bindingConfiguration="BindingReliableMessaging" contract="FlipCaseService.IFlipCaseService" >
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</service>
<bindings>
<wsHttpBinding>
<binding name="BindingReliableMessaging">
<reliableSession enabled="true" inactivityTimeout="00:10:00"/>
</binding>
</wsHttpBinding>
</bindings>
<behavior name="ServiceBehaviorMetaData">
<serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8080/flipcase/metadata" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
难道你不能在失败时重试呼叫吗? – Evk
我不想在服务器上再次进行相同的操作。 –
WCF服务在默认情况下无状态的,这是一个服务性质的,但你可以使用的状态。无论如何,在你的情况下,我认为你可以解决缓存下一次调用的结果,避免再次处理。 –